ハノイの塔
この演習では、再帰アルゴリズムで ハノイの塔 パズルを実装します。目的は、次のルールに従って、3本の棒のうち1本に積まれたすべてのディスクを別の棒へ移動することです。
- 1回に動かせるディスクは1枚だけです。
- 取り出せるのは各山の一番上のディスクだけで、置くときも別の山の一番上に置きます。
- 小さいディスクの上に大きいディスクを置いてはいけません。

ここで示すアルゴリズムは、ディスク4枚、棒3本('A'、'B'、'C')の実装例です。コードには2つの誤りがあります。実行すると最大再帰深度を超えてコンソールがクラッシュしてしまいます。バグを見つけて修正してみましょう。
この演習はコースの一部です
Pythonで学ぶデータ構造とアルゴリズム
演習の手順
- 基本条件を修正してください。
hanoi()関数の呼び出しを修正してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def hanoi(num_disks, from_rod, to_rod, aux_rod):
# Correct the base case
if num_disks >= 0:
# Correct the calls to the hanoi function
hanoi(num_disks, from_rod, aux_rod, to_rod)
print("Moving disk", num_disks, "from rod", from_rod,"to rod",to_rod)
hanoi(num_disks, aux_rod, to_rod, from_rod)
num_disks = 4
source_rod = 'A'
auxiliar_rod = 'B'
target_rod = 'C'
hanoi(num_disks, source_rod, target_rod, auxiliar_rod)