/** * 分治实现汉诺塔 * * @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'); }