java分治实现汉诺塔

java分治实现汉诺塔

/**
 * 分治实现汉诺塔
 *
 * @param num 盘子的数量
 * @param a
 * @param b
 * @param c
 */
public static void hanoiTower(int num, char a, char b, char c) {
    // 如果只有一个盘
    if (num == 1) {
        System.out.println("第1个盘从" + a + " => " + c);
    } else {
        // 剩下所有的盘A->B,移动过程用到C
        hanoiTower(num - 1, a, c, b);
        System.out.println("第" + num + "个盘从" + a + " => " + c);
        // B->C
        hanoiTower(num - 1, b, a, c);
    }
}

测试类

public static void main(String[] args) {
    hanoiTower(5, 'A', 'B', 'C');
}
posted @ 2022-04-24 23:23  CoderCatIce  阅读(18)  评论(0编辑  收藏  举报