move(3,?"a",?"b",?"c")
n=3:????//開始從a上移動n-1即2個盤子通過c移動到b,以騰出c供a最后一個盤子移動
????move(2,?"a","c","b")
????n=2:????//開始進行n=2的一個遞歸,把當前a('a')柱上的n-1個盤子通過c('b')移動到b('c')
????????move(1,?"a",?"b",?"c")
????????n=1:????????//n=2的第一個遞歸完成,打印結果,執行當前子函數剩余代碼
????????????print("a",?"->",?"c")?
????????move(1,?"a",?"c",?"b")
????????n=1:????????????print("a",?"->",?"b")????????move(1,?"c",?"a",?"b")
????????n=1:????????????print("c",?"->",?"b")
???? ???//到這里完成了a柱上面的n-1即是2個盤子的移動//開始把a柱上最后一個盤子移動到c柱上move(1,?"a",?"b",?"c")
n=1:????print("a",?"->",?"c")????//到這里完成移動a柱上的最后一個盤子到c柱上?move(2,?"b",?"a",?"c")
n=2://開始進行n=2的第二個遞歸,即把當前b('b')的盤子(n-1個)通過a('a')移動到c('c')上
????move(1,?"b",?"c",?"a")
????n=1:????//n=2?的第二個遞歸完成,打印結果并執行當前子函數的剩余代碼
????????print("b",?"->",?"a")????move(1,?"b",?"a",?"c")
????n=1:????????print("b",?"->",?"c")????move(1,?"a",?"b",?"c")
????n=1:????????print("a",?"->",?"c")????????//到這里把b上的盤子通過a移動到c,//整個代碼執行完畢,漢諾塔移動完成
2017-02-16
三個n=1是怎么來的?