Java—汉诺塔游戏
变量对应含义
num表示要移动的个数,a,b,c分别表示a,b,c柱子。
方法思路
思路是将多个盘子分成两个部分,底部的一个盘子和上面的所有盘子。
首先,通过递归调用 move() 方法,将上面的所有盘子从柱子 a 经过柱子 c 移动到柱子 b 上。
再将最底部的盘子从柱子 a 移动到柱子 c,打印出移动路径。
最后再次通过递归调用 move() 方法,将柱子 b 上的所有盘子经过柱子 a 移动到柱子 c 上。
完整代码
public class HanoiTower {
public static void main(String[] args){
Tower tower=new Tower();
tower.move(5,'a','b','c');
}
}
class Tower{
public void move(int num,char a,char b,char c){
if (num==1){ // 只有一个盘时
System.out.println(a+"->"+c);
}
else { // 多个盘可以看作两个,最下面的和最上面的所有盘(num-1)
move(num-1,a,c,b); // 移动最上面的这个盘到b,再借助c
System.out.println(a+"->"+c);
move(num-1,b,a,c); // 再把b塔中所有盘,移动到c,借助a
}
}
}

浙公网安备 33010602011771号