原始碼:
move(n, a, b, c)這個函式不要理解為abc三個柱子。
請這樣理解,move函式,用來完成這麼乙個任務:
把n個盤子,從「源柱」通過「過渡柱」移動到「目標柱」上。第一步中「移動n-1個盤」子任務和「移動n個盤」母任務僅僅是目的柱的位置不一樣。即move(n, source, bridge, destination)
為了完成這個任務,需要將此母任務分解為三個子任務:
1.把「源柱」上面的n-1個盤,移動到「過渡柱」
2.把「源柱」最下面的第n個盤移動到「目標柱」
3.把第一步中的n-1個盤從「過渡柱」移動到「目標柱」,任務完成。
子任務中源盤和母任務一樣,過渡盤是母任務的目的盤,目的盤是母任務的過渡盤。所以呼叫函式應該是這樣
同理,第三步的函式應該是# 把n-1個盤,從source通過destination移動到bridge
move(n-1, source, destination, bridge)
於是,三個步驟轉換成程式就是# 把n-1個盤,從bridge通過source移動到destination
move(n-1, bridge, source,destination)
當只有乙個盤的時候,直接移動,不存在子任務move(n-1, source, destination, bridge)
print (source,'-->', destination)
move(n-1, bridge, source, destination)
最開始,源柱,過渡柱和目的柱,分別叫做a,b,和c。if n == 1:
print (source,'-->', destination)
所以move呼叫入口應該是:move(n, 『a』, 『b』, 『c』)
這下好明白了吧。
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 ...
漢諾塔python實現
def hanoi height,left,center,right 漢諾塔,將高為height的塔從left借助center移到right if height1 一層漢諾塔,直接從left到right print 第 層 從 format height,left,right else 大於等於兩層...
Python實現漢諾塔
漢諾塔 漢諾塔 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。實現漢...