python遞迴實現漢諾塔

2021-08-20 20:11:45 字數 629 閱讀 1502

實現思路:

1.將a上 n-1個移動到b

2.將a上最後乙個移動到c

3.將b上 n-1個移動到a

4.將b上最後乙個移動到c

重複上面步驟即可

python**實現如下:

#全域性變數cnt 統計移動次數

global cnt

cnt = 0

def move(x, y):

global cnt #再次宣告,表示在這裡使用的是全域性變數,而不是區域性變數

cnt = cnt + 1 #執行一次move函式,cnt加一

print('%s -> %s' %(x, y))

def han(n, a, b, c):

if n == 1:

move(a, c)

else:

han(n-1, a, c, b)

move(a, c)

han(n-1, b, a, c)

return cnt

#執行部分

if __name__ == "__main__":

ret = han(7, 'a', 'b', 'c')

print('移動次數為:', ret)

python 漢諾塔遞迴實現

def move from,to 將盤子從from移動到to,動畫效果需要腦補 print from,to def hanoi n,src,tmp,dst 將n個盤子從src搬到dst if n 1 只有乙個盤子的情況 move src,dst else 有乙個以上盤子的情況 hanoi n 1,s...

漢諾塔遞迴 Python

今天繼續學習遞迴 終於 終於把 去年學c語言沒看懂也沒去研究的漢諾塔解決了 感謝網上眾多的老鐵們的資料相助 和 宿舍學長的幫助,好了以下說理解後的思路 1 n 1 第1次 1號盤 a csum 1 次 2 n 2 第1次 1號盤 a b 第2次 2號盤 a c 第3次 1號盤 b c sum 3 次...

Python實現遞迴函式 漢諾塔

def move a,b,c,n if n 1 print a,c else move a,c,b,n 1 print a,c move b,a,c,n 1 move a b c 3 以上為python 實現漢諾塔遞迴問題,關於程式過程,可以根據以下三幅圖作為輔助理解 1 當只有乙個盤子的時候,只需...