1. 程式人生 > >漢諾塔--Python的資料結構--無聊時候打發自己的時間(一)

漢諾塔--Python的資料結構--無聊時候打發自己的時間(一)

這個遊戲 的規則很簡單。

對於這個遊戲來說最重要的有倆點:1、對於K個(K大於等於1)盤子最少需要多少次搬運,這裡有個關係式,可以用第一數學歸納法證明,自行證明;2、對於確定的次數,每次我們進行的操作具體是怎樣的,或者說給一個具體的操作指南,讓機器知道每次要幹什麼。在這裡我要討論的是第二點。

具體的三步走:1、將height-1的塔移動到中間杆中;2、將剩餘盤子一道目標杆;3、將height-1的塔移動到目標杆。

def moveTower(height,fromPole,toPole,withPole):
    if height >= 1:
        moveTower(height-1,fromPole,withPole,toPole)
        moveDisk(fromPole,toPole)
        moveTower(height-1,withPole,toPole,fromPole)

def moveDisk(fp,tp):
    print("moving disk from",fp,"to",tp)

moveTower(3,'A','B','C')   

執行效果:

這裡沒有考慮盤子在杆上的資料結構。

---------------------------------------結尾終結-------------------------------------------------------------------------------------------------