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関数を呼び出して各円盤の移動手順を印刷することができます。