遞迴解決漢諾塔問題

2022-04-11 04:24:49 字數 925 閱讀 4489

漢諾塔:漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。

c語言實現(假設最開始放64片**圓盤的柱子為a, 要移動到c柱子上,借助的介質為b柱子):

1 #include 2/*

3* 偽演算法(要移動盤子的柱子為a,借助的介質柱子為b,移動到目的柱子為c.

4* 如果盤子數為1,則直接將盤子從a柱子移到c柱子。

5* 否則:

6*     step1:將a柱子上的n-1個盤子借助於c柱子移動到b柱子上。

7*     step2:將a柱子上的第n個盤子直接移動到c柱子上。

8*     step3:將b柱子上的n-1個盤子借助a柱子移動到c柱子上。9*/

1011

void hanoi(int n, char a, char b, char c)  else 

19 }

20int main(void) 

結果:1 e:\tarbitrary\datastructure\recursion>gcc hanoi.c -o hanoi

23 e:\tarbitrary\datastructure\recursion>hanoi

4 請輸入柱子的個數:3

5 將編號為1的盤子從a柱子直接移動到c柱子

6 將編號為2的盤子從a柱子直接移動到b柱子

7 將編號為1的盤子從c柱子直接移動到b柱子

8 將編號為3的盤子從a柱子直接移動到c柱子

9 將編號為1的盤子從b柱子直接移動到a柱子

10 將編號為2的盤子從b柱子直接移動到c柱子

11 將編號為1的盤子從a柱子直接移動到c柱子

遞迴解決漢諾塔問題

何為漢諾塔問題 漢諾塔 hanoi tower 又稱河內塔,源於印度乙個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,任何時候,在小圓盤上都不能放大圓盤,且在三根柱子之間...

遞迴解決漢諾塔問題

漢諾塔問題 有三根相鄰的柱子,標號為a,b,c,a柱子上從下到上按金字塔狀疊放著n個不同大小的圓盤,要把所有盤子乙個乙個移動到柱子b上,並且每次移動同一根柱子上都不能出現 子在小盤子上方,求至少需要多少次移動。我們首先假設n 1,那麼move n 1,因為這時候只需要從a c便可以。接下來假設n 2...

Python遞迴解決漢諾塔問題

漢諾塔 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。實現 如...