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
        }
    }
}

 

posted @ 2026-07-17 13:46  Dr丶云幕  阅读(6)  评论(0)    收藏  举报