pythonでハノイの塔の再帰コードはどのように書くか

再帰を利用してハノイの塔問題を解くことができます。以下は Python のサンプルコードです:

def hanoi(n, source, target, auxiliary):
    if n > 0:
        # 先将前 n-1 个盘子从源柱子移动到辅助柱子
        hanoi(n-1, source, auxiliary, target)
        # 将最底下的盘子从源柱子移动到目标柱子
        print(f"Move disk {n} from {source} to {target}")
        # 再将之前移动到辅助柱子的 n-1 个盘子移动到目标柱子
        hanoi(n-1, auxiliary, target, source)

# 测试代码
hanoi(3, "A", "C", "B")

コードにおいてhanoi関数は再帰関数で、n 枚の円盤、始点の棒のポール、目的地の棒のポール、中継地の棒のポールを含む4つの引数を取ります。まず最初に、円盤の数がゼロよりも大きいかどうかをチェックし、大きければ再帰が行われます。

再帰的过程には3つのステップが含まれます。

  1. ハノイ(n-1, source, auxiliary, target)
  2. 一番下の皿を始めの棒から、終点の棒に動かします。このステップで必要なのは、移動を1回だけ行うことです。
  3. ハノイ(n-1、補助、目標、源)

ハノイ関数を呼び出して正しいパラメータを渡すことでコードをテストできます。上のサンプルコードでは、3枚のディスクを軸Aから軸Cに軸Bを補助として使用して移動します。プログラムは各ステップでの移動内容を出力します。

bannerAds