漢諾塔是一種古老的智力游戲,以法國數學家Edouard Lucas的名字命名。這個游戲包括三個塔和一些圓盤,這些圓盤按照從大到小的順序放在一個塔上。游戲的目標是將所有的盤子從一個塔移動到另一個塔上,但是每次你只能移動一個盤子并且不能將較大的盤子放在較小的盤子上。
def hanoi(n, source, target, auxiliary): if n == 1: print("移動盤子1從 " + source + " 到 " + target) return hanoi(n-1, source, auxiliary, target) print("移動盤子" + str(n) + "從 " + source + " 到 " + target) hanoi(n-1, auxiliary, target, source) n = 3 hanoi(n, 'A', 'C', 'B')
下面是代碼解釋:
hanoi函數使用遞歸的方式實現漢諾塔的移動。如果n等于1,則只需將一個盤子從源塔移動到目標塔。否則,將n-1個盤子從源塔移動到輔助塔,然后將最后一個盤子從源塔移動到目標塔。最后,將n-1個盤子從輔助塔移動到目標塔。
在主函數中,我們調用hanoi函數,并將源塔、目標塔和輔助塔指定為A、C和B。在此示例中,我們將3個盤子移動到目標塔上。
執行代碼,輸出結果如下:
移動盤子1從 A 到 C 移動盤子2從 A 到 B 移動盤子1從 C 到 B 移動盤子3從 A 到 C 移動盤子1從 B 到 A 移動盤子2從 B 到 C 移動盤子1從 A 到 C
從結果可以看出,我們已經成功地將3個盤子從A移到了C。