以下圖的三層漢諾塔為例,開始柱指的是開始狀態時存放所有盤子的柱子,中轉柱指的是中間狀態時暫時存放n-1個(三層就是3-1個)盤子的柱子,目標柱指的是盤子最終要移動到的柱子。這裡需要注意,開始柱,中轉柱,目標柱並不是一成不變的,而是會根據層次的不同而改變。漢諾塔問題可這麼簡單理解:要解決從下往上數第n個盤子,即從大往小數第n個盤子,首先得解決第n-1個盤子的移動,而第n-1個盤子的移動又得先解決第n-2個盤子的移動。這個過程就是遞迴過程,從而回到解決第乙個盤子如何移動的問題上。
實現的**和移動途徑如下:
def move(n,a,b,c):
if n==1:
print(a,』–>』,c)
else:
move(n-1,a,c,b)
print(a,』–>』,c)
move(n-1,b,a,c)
move(4,『a』,『b』,『c』)
python實現漢諾塔問題
count 0 defhanoi n,x,y,z 圓盤數量,起始柱子,中間柱子,目標柱子,global count if n 1 print format 1,x,z count 1 else hanoi n 1,x,z,y 把 n 1 個圓盤從x移到y上,需借助z x z y print form...
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實現漢諾塔
原始碼 move n,a,b,c 這個函式不要理解為abc三個柱子。請這樣理解,move函式,用來完成這麼乙個任務 把n個盤子,從 源柱 通過 過渡柱 移動到 目標柱 上。即move n,source,bridge,destination 為了完成這個任務,需要將此母任務分解為三個子任務 1.把 源...