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枚の円盤を最終柱へ移動します。再帰的に呼び出すことにより、問題の規模を小さくしていき、最終的にハノイの塔問題を解きます。

bannerAds