def move(n, a, b, c):
if n == 1:
print('move', a, '-->', c)
else:
move(n-1, a, c, b)
move(1, a, b, c)
move(n-1, b, a, c)
例如:move(4, 'a', 'b', 'c')
執行步驟:
1.先執行move(4, 'a', 'b', 'c')
其中move(4, 'a', 'b', 'c')包括 move(3, 'a', 'c', 'b')
move(1, 'a', 'b', 'c')
move(3, 'b', 'a', 'c')
2. 然後執行move(4, 'a', 'b', 'c')中的move(3, 'a', 'c', 'b')
其中move(3, 'a', 'c', 'b') 包括move(2, 'a', 'b', 'c')
move(1, 'a', 'c', 'b')
move(2, 'c', 'a', 'b')
3.然後依次執行move(3, 'a', 'c', 'b') 中的move(2, 'a', 'b', 'c')中的所有函式,因為n=1滿足了遞迴結束條件,至此move(2, 'a', 'b', 'c') 執行完畢
其中move(2, 'a', 'b', 'c') 包括move(1, 'a', 'c', 'b')
move(1, 'a', 'b', 'c')
move(1, 'b', 'a', 'c')
4.然後回到move(3, 'a', 'c', 'b')執行move(2, 'a', 'b', 'c')之後的**,至此move(3, 'a', 'c', 'b')執行完畢
5.最後回到move(4, 'a', 'b', 'c')執行move(3, 'a', 'c', 'b') 之後的**,至此move(4, 'a', 'b', 'c') 執行完畢 ,整個漢諾塔遊戲完成了
遞迴函式,層層遞迴的時候,先要一直算到遞迴條件結束,然後再一層一層的返回計算,就可以遞迴出結果了。
利用python實現漢諾塔遊戲
漢諾塔問題是乙個經典的遞迴問題,對於這個問題,我們可以把它簡單的去看成是如何用n 1去表示n。在a,b,c三個柱子上,我們先假設a柱上只有兩個盤子,那麼很簡單,只需要把最上面的那個盤子移到b柱上,再把a柱上最下面的盤子移到c柱上,最後把b柱的盤子移到c柱就可以了。假設我們有n個盤子,那麼可以把最下面...
python 漢諾塔 Python漢諾塔
import turtle class stack def init self self.items def isempty self return len self.items 0 def push self,item def pop self return self.items.pop def ...
漢諾塔遊戲
漢諾塔 於印度傳說的乙個故事,上帝創造世界時作了三根金剛石柱子,在一根柱子上從下往上按大小順序摞著64片 圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一回只能移動乙個圓盤。要想玩轉漢諾塔,需要先理解遞迴。如果乙個問題可以不斷地...