Python遞迴實現漢諾塔的移動

2021-10-03 21:35:31 字數 559 閱讀 8138

學習廖雪峰老師的python教程時遇到利用遞迴函式移動漢諾塔的練習:

請編寫move(n, a, b, c)函式,它接收引數n,表示3個柱子a、b、c中第1個柱子a的盤子數量,然後列印出把所有盤子從a借助b移動到c的方法。

解題思路記錄如下:

a,b,c三個圓柱,分別為初始位,過渡位,目標位,設a柱為初始位,c位為最終目標位

(1)將最上面的n-1個圓盤從初始位移動到過渡位

(2)將初始位的最底下的乙個圓盤移動到目標位

(3)將過渡位的n-1個圓盤移動到目標位

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

if n == 1:

print('move', a, '-->', c)

else:

# 把 (n-1) 個圓盤移動到 b

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

# 將a的最後乙個圓盤移動到c

move(1, a, b, c)

# 最後將b的(n-1)個圓盤移動到c

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

參考鏈結

python遞迴實現漢諾塔

實現思路 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 再次宣告,表示在這...

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 次...