Python實現遞迴函式 漢諾塔

2021-07-14 03:55:02 字數 815 閱讀 5769

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、 當只有乙個盤子的時候,只需要從將a塔上的乙個盤子移到c塔上。

2、當a塔上有兩個盤子是,先將a塔上的1號盤子(編號從上到下)移動到b塔上,再將a塔上的2號盤子移動的c塔上,最後將b塔上的小盤子移動到c塔上。

3、 當a塔上有3個盤子時,先將a塔上編號1至2的盤子(共2個)移動到b塔上(需借助c塔),然後將a塔上的3號最大的盤子移動到c塔,最後將b塔上的兩個盤子借助a塔移動到c塔上。

4、當a塔上有n個盤子是,先將a塔上編號1至n - 1的盤子(共n - 1 個)移動到b塔上(借助c塔),然後將a塔上最大的n號盤子移動到c塔上,最後將b塔上的n - 1個盤子借助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 次...