snow爱 2022-02-09 12:36 采纳率: 66.7%
浏览 14

java 代码解析汉诺塔的递归回溯问题

代码是怎么回溯的,不明白怎么移动的,为什么这么移动。

public class HanoiTower{
    public static void main(String[] args){
        Tower tower=new Tower();
        tower.move(5,'A','B','C');
    }
}
class Tower{
    //num 表示要移动的个数,a,b,c分别表示A塔,B塔,C塔
    public void move(int num,char a,char b,char c){
        //如果只有一个盘num=1
        if(num==1){
            System.out.println(a+"->"+c);
        }else{
            //如果有多个盘,可以看成两个,最下面的和上面的所有盘
            //(1)先移动上面所有的盘到b,借助c
            move(num-1,a,c,b);
            //(2)把最下面的这个盘移动到c
            System.out.println(a+"->"+c);
            //(3)再把b塔的所有盘,移动的c,借助a
            move(num-1,b,a,c);
        }
    
    }
}


  • 写回答

1条回答 默认 最新

  • 盐香 2022-02-09 13:39
    关注

    在 11,16,20行打上断点,用debug模式运行,不就可以看到整个运行流程以及线程执行顺序。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月9日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表