【資料結構】遞迴演算法—漢諾塔
阿新 • • 發佈:2019-01-01
漢諾塔的問題,也是一個經典的遞迴演算法問題。
下面是自己總結的一張整體流程圖。
下面是程式碼,程式碼雖簡單,但理解其內部執行原理很重要。
//====================================================================== // // Copyright (C) 2014-2015 SCOTT // All rights reserved // // filename: HanNuoTa.c // description: a demo to display HanNuoTa // // created by SCOTT at 02/10/2015 // http://blog.csdn.net/scottly1 // //====================================================================== #include <stdio.h> void HanNuoTa(int n, char a, char b, char c) { if( n < 1 ) return ; HanNuoTa(n-1, a, c, b); printf("把第%d盤子通過%c移到%c\n", n, a, c); HanNuoTa(n-1, b, a, c); } int main() { int num; printf("Input The Num you want to create:"); scanf("%d", &num); HanNuoTa(num, 'A', 'B', 'C'); return 0; }
執行結果:
如果對電腦的演算法有懷疑,大家可以自己動手算算,看看它的方法是不是最優的。
原創文章,轉載請著名出處:http://blog.csdn.net/scottly1/article/details/43705291