- 解决汉诺塔问题
public class HanoiTower {
public static void main(String[] args) {
dac(3, 'a', 'b', 'c');
}
public static void dac(int num, char a, char b, char c) {
// 只有一个盘
if (num == 1) {
System.out.println("第1个盘从 " + a + "——>" + c);
} else {
// 如果有num>=2个盘 我们总是可以看作是两个盘 ①最下面的一个盘 ②上面的所有盘
// 1.先把最上面的所有盘a->b,移动过程会使用到c塔
dac(num - 1, a, c, b);
// 2.把最下面的一个盘a->c
System.out.println("第" + num + "个盘从 " + a + "——>" + c);
// 3.把b塔的所有盘从b->c,移动过程使用到a塔
dac(num - 1, b, a, c);
}
}
}