把柱子分為三種身分:當前盤子所在的 source,盤子應該被移動到的 target ,以及剩下用來輔助移動的 auxiliary ,注意柱子 A、B 和 C 的編號是固定的,但這些身分並不是,也就是說就算這一步 A 是 source,但下一步 source 可能會變成 B ,身分取決於當前這一步盤子該從哪裡移到哪裡。
當要移動 n 塊時,步驟如下:
當在處理上面 n-1 塊時,可以視為最底下那塊不存在,因為它不會對上面盤子的移動造成任何影響。也就是說,在第一步和第三步時,會分別進入一次新的遞迴,只是這次要處理的塊數變成 n-1。
看起來很複雜,但其實只要放心大膽地寫下去,就會發現電腦會讓魔法成真 XD