python 學習記錄(1)——漢諾塔
漢諾塔規則
漢諾塔遊戲需要把所有圓盤從一根柱子上移動到另一根柱子上,且每次只能移動乙個圓盤,小圓盤必須在大圓盤上面
漢諾塔思路
移動兩個圓盤時,先把圓盤a移動到柱子y,再把圓盤b移動到柱子z,最後把圓盤a從柱子y移動到柱子z
那麼,移動三個圓盤時,我們可以將圓盤a,b看做乙個整體,把上面的過程進行一遍即可,即先把圓盤a,b移動到柱子y,再把圓盤c移動到柱子z,最後把圓盤a,b從柱子y移動到柱子z
為了達到這個目的,我們需要將圓盤a,b移動到柱子y,這時我們發現我們還需要進行類似的過程,先把圓盤a移動到柱子z,再把圓盤b移動到柱子y,最後把圓盤a從柱子z移動到柱子y
當圓盤數量再增多時,不難發現,基本都是這樣的思路:將上面的一堆移到柱子y,下面最大的移到柱子z,要想把上面一堆移到柱子y,就要把他們中的最大的移到柱子y,其他的從柱子x移到柱子z,再移到柱子y
遞迴很適合這樣乙個倒推的過程
**如下
def
hanoi
(n,a,b,c)
:if n==1:
(a,"->"
,c)else
: hanoi(n-
1,a,c,b)
hanoi(
1,a,b,c)
hanoi(n-
1,b,a,c)
n=int
(input
("請輸入漢諾塔層數"))
a="a"
b="b"
c="c"
hanoi(n,a,b,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 ...
遞迴1 漢諾塔
漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。後來,這個傳說就...
漢諾塔問題python詳解 《簡單分析》漢諾塔問題
漢諾塔是乙個非常著名的遊戲,遊戲中將會有三根棍子,第一根棍子上有n個從大到小疊起來的盤子,遊戲的目標是將這n個從大到小疊起來的盤子放到第三根棍子上。每一次只允許移動乙個,而且大的盤子永遠在小的盤子的下面。這也是非常著名的遞迴入門題。我們將通過呼叫三次遞迴函式來解決這個問題。暫時不考慮 只考慮解題。先...