Javaでハノイの塔を実装する方法
以下にJavaでハノイの塔問題を実装したサンプルコードを記載します
public class HanoiTower {
public static void main(String[] args) {
int n = 3; // 汉诺塔的层数
char from = 'A'; // 起始柱子
char to = 'C'; // 目标柱子
char aux = 'B'; // 辅助柱子
hanoi(n, from, to, aux);
}
public static void hanoi(int n, char from, char to, char aux) {
if (n == 1) {
System.out.println("移动盘 " + n + " 从 " + from + " 到 " + to);
} else {
hanoi(n - 1, from, aux, to);
System.out.println("移动盘 " + n + " 从 " + from + " 到 " + to);
hanoi(n - 1, aux, to, from);
}
}
}
上記のコードでは、ハノイ関数は再帰を使ってハノイの塔問題を解いています。1枚だけ円盤があるときは、直接その円盤を初期柱から最終柱へ移動します。複数の円盤があるときは、上のn-1枚の円盤を初期柱から追加柱へ移動してから、最も大きい円盤を初期柱から最終柱へ移動し、最後に追加柱へ移動したn-1枚の円盤を最終柱へ移動します。再帰的に呼び出すことにより、問題の規模を小さくしていき、最終的にハノイの塔問題を解きます。