代码内容
// 使用递归方法模拟实现汉诺塔
public class HanoiTower{
public static void main(String[] args) {
Tower tower = new Tower();
tower.move(4,'A','B','C');//传如总共的盘子个数(4个)和3个塔
}
}
class Tower{
//num表示要移动的个数,a,b,c分别表示A塔,B塔,C塔
public void move(int num,char a,char b,char c){
//如果只有1个盘子(nun=1),则直接从a移动到c
if (num == 1) {
System.out.println(a + " -> " + c);
}else{
//如果有多个盘子,就把他看成最下面的一个,和剩下的所有盘子看成一个,就是(num-1)
//先把上面的盘子移动到b
move(num-1,a,c,b);
//再把最后的盘子移动到c
System.out.println(a + " -> " + c);
//最后把b上面的盘子移动到c
move(num-1,b,a,c);
}
}
}
运行效果
![](https://img-blog.csdnimg.cn/direct/ee0429c6a3cb4cc18c6f542e521f867b.png)