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("{}:{}->{}".format(n,x,z)) #把最下面的n直接從x->z
count += 1
hanoi(n-1,y,x,z) #(n-1)個圓盤從y移到z上,需借助x:y->x->z
num = eval(input("請輸入漢諾塔問題的圓盤數目:"))
hanoi(num, 'a', 'b', 'c')
print("搬運次數:",count)
python實現漢諾塔問題
以下圖的三層漢諾塔為例,開始柱指的是開始狀態時存放所有盤子的柱子,中轉柱指的是中間狀態時暫時存放n 1個 三層就是3 1個 盤子的柱子,目標柱指的是盤子最終要移動到的柱子。這裡需要注意,開始柱,中轉柱,目標柱並不是一成不變的,而是會根據層次的不同而改變。漢諾塔問題可這麼簡單理解 要解決從下往上數第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 ...
Python實現漢諾塔
原始碼 move n,a,b,c 這個函式不要理解為abc三個柱子。請這樣理解,move函式,用來完成這麼乙個任務 把n個盤子,從 源柱 通過 過渡柱 移動到 目標柱 上。即move n,source,bridge,destination 為了完成這個任務,需要將此母任務分解為三個子任務 1.把 源...