漢諾塔
演算法分析
1.步驟1:如果是乙個盤子,直接將a柱子上的盤子從a移動到c
否則2.步驟2:先將a柱子上的n-1個盤子借助c移動到b(圖1)
已知函式形參為hanoi(n,a,b,c)
,這裡呼叫函式的時候是a柱子上的n-1個,a借助c移動到b,所以呼叫函式hanoi(n-1,a,c,b)
3.步驟3:此時移動完如圖1,但是還沒有移動結束,首先要將a柱子上最後乙個盤子直接移動到c(圖2),呼叫函式hanoi(1,a,b,c)
4.步驟4:最後將b柱子上的n-1個盤子借助a移動到c(圖3),呼叫函式hanoi(n-1,b,a,c)
這時遞迴呼叫就完成了
**
def hanoi(n,a,b,c):
if n == 1:
print(a,'-->',c)
else:
hanoi(n-1,a,c,b)
hanoi(1,a,b,c)
hanoi(n-1,b,a,c)
# 測試
hanoi(3,a,b,c)
# a --> c
# a --> b
# c --> b
# a --> c
# b --> a
# b --> c
# a --> c
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演算法 漢諾塔
漢諾塔 hanoi tower 又稱河內塔,源於印度乙個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著n片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,任何時候,在小圓盤上都不能放大圓盤,且在三根柱子之間一次只能移動乙個圓...
Python實現漢諾塔
原始碼 move n,a,b,c 這個函式不要理解為abc三個柱子。請這樣理解,move函式,用來完成這麼乙個任務 把n個盤子,從 源柱 通過 過渡柱 移動到 目標柱 上。即move n,source,bridge,destination 為了完成這個任務,需要將此母任務分解為三個子任務 1.把 源...