C# ハノイの塔 再帰アルゴリズムで解く方法

ハノイの塔の問題はクラシックな再帰問題であり、再帰アルゴリズムを使って解決することができます。下記はC#で書かれたハノイの塔の問題の再帰アルゴリズムの例です:

using System;

class MainClass {
    public static void Main (string[] args) {
        int n = 3; // 汉诺塔的盘子数量
        Hanoi(n, 'A', 'B', 'C');
    }

    // 递归函数,将n个盘子从A经过B移动到C
    static void Hanoi(int n, char source, char auxiliary, char target) {
        if (n == 1) {
            Console.WriteLine($"移动盘子 {n}{source}{target}");
        } else {
            Hanoi(n - 1, source, target, auxiliary);
            Console.WriteLine($"移动盘子 {n}{source}{target}");
            Hanoi(n - 1, auxiliary, source, target);
        }
    }
}

上記の例では、私たちはHanoi関数を定義しました。この関数は、プレートの数n、ソースピラーsource、補助ピラーauxiliary、目標ピラーtargetの3つの引数を受け取ります。その後、漢の塔の問題を解決するために再帰呼び出しを使用します。

Main関数でハノイの塔の円盤の数nを設定し、その後、Hanoi関数を呼び出して各円盤の移動手順を印刷することができます。

bannerAds