汉诺塔问题

51 阅读1分钟
public class App {

    public static int counter = 0;

    public static void main(String[] args) {
        hanoi(3, "A", "B", "C");
    }

    /**
     * 汉诺塔核心逻辑
     *
     * @param number 盘子数量
     * @param begin  起始柱
     * @param end    目标柱
     * @param middle 中转柱
     */
    public static void hanoi(int number, String begin, String end, String middle) {
        if (number == 1) {
            System.out.println(String.format("%s. %s => %s", ++counter, begin, end));
        } else {
            hanoi(number - 1, begin, middle, end);
            hanoi(1, begin, end, middle);
            hanoi(number - 1, middle, end, begin);
        }
    }
}