遞迴 漢諾塔

2021-09-28 14:23:16 字數 826 閱讀 4603

漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。

我們假設有n個圓盤,三根柱子a,b,c,如果要把三個圓盤從a移動到c,相當於我們把上面的n-1個圓盤移動到b,把第n個大圓盤移動到c,再把b上的n-1個圓盤移動到c即可。對於n-1個圓盤,我們自然不能一次性拿走,我們拿這n-1個圓盤,仍然把上面的n-2個圓盤拿到b,把第n-1個拿到c,再把n-2個拿到c,這n-1個就移動好了。可見,每一步都是類似的,我們遞迴的實現這個過程將會是很簡單的。

**:

def

hanoi

(platesnum, src, mid, dest)

:if platesnum ==1:

print

(src +

'->'

+ dest)

return

else

: hanoi(platesnum-

1, src, dest, mid)

print

(src +

'->'

+ dest)

hanoi(platesnum-

1, mid, src, dest)

return

測試:

hanoi(3,

'a',

'b',

'c')

漢諾塔 遞迴

個人理解遞迴函式的基本要求就是,函式中呼叫函式本身,滿足特定的條件後返回。include include include include include include include include include include include include include 標頭檔案引用的較多...

遞迴漢諾塔

遞迴問題 遞迴要有三個要素 1.遞迴結束條件 2.遞迴結束時的處理 3.抽取重複的邏輯,剝離外殼 重點都在這一步 漢諾塔問題 把圓盤從下面開始按大小順序重新擺放在另一根柱子上。且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。首先,要搞這個編碼得要知道漢諾塔的解題思路 1.把a塔上...

遞迴 漢諾塔

漢諾塔問題。這裡順便可以求出一共需要搬運的次數。以下是漢諾塔問題的解法 class hanoi from 搬運的起點,to 搬運的目標地,middle 臨時中轉地 private static int hanoi int level,char from,char to,char middle int...