剛剛看了python的遞迴,實現了一下漢諾塔問題求解。mark一下,txtx。
漢諾塔問題:
解題思路:
把n個圓盤看作兩部分:最底部的乙個圓盤和上面的n-1個圓盤(二分類)
先將n-1個圓盤移到b柱(中轉)
再將最底下的乙個圓盤移到c柱(目標)
最後將n-1個圓盤移到c柱(目標)
然後我們對n-1個圓盤做相似過程**移的柱子(n-1個圓盤)——>中間柱子,轉移的柱子(底下的圓盤)——>目標柱子,中間柱子——>目標柱子)
def change(n,a,b,c):
if n==1:
print('move',a,'---->',c)
else:
change(n-1,a,c,b)
change(1,a,b,c)
change(n-1,b,a,c)
change(3,'a','b','c')
n代表初始時,有幾個盤子。
結果如圖所示:
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遞迴解決漢諾塔問題
漢諾塔 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。實現 如...
python 漢諾塔問題
最近被漢諾塔的python 遞迴給迷暈,本想搞個程式除錯,但sublimetext用的不是很熟,參考了很多大佬的博文,需要總結下以防往後忘記 關於理解 流程,其實主要關注兩點 1 形參實參注意別搞混了 2 函式呼叫後都是要返回的,從哪個入口進去執行最後執行完程式是要返回回原來的入口,再執行時要注意開...