递归算法——汉诺塔问题的代码(java实现)

递归算法

汉诺塔

汉诺塔实现代码.

// An highlighted block
 /**
     *
     * @param num 盘子的数量
     * @param from 开始移动的柱子
     * @param in    中间转换用的柱子
     * @param to    所有盘子要去的柱子
     *              无论盘子有多少,都认为有两个盘子,即n个盘子可视为上面n-1个盘子和最下面一个盘子
     */
    public static void hanoi(int num,char from,char in,char to){
        if (num == 1){
            //盘子数量为1,直接输出
            System.out.println("第1号盘子从" + from+"号柱子移动到"+to+"号柱子");
        }else{
            //盘子数量不为1则继续调用hanoi()方法
            //此时挪动上面的n-1个盘子,将n这n-1个盘子挪到中间柱,而对于这n-1个盘子来说,要去的地方就是中间的柱子,所以此时的to在in的位置
            //挪完后,最下面的那个盘子自然就挪到了第三个柱子上
            hanoi(num-1,from,to,in);
            System.out.println("第"+num+"号盘子从" + from+"号柱子移动到"+to+"号柱子");
            //现在开始继续将中间的n-1个盘子重复,上面的操作
            //此时,这些盘子,又分为上面n-1个和最下面的一个
            //对于上面的n-1个而言,此时的开始位置是in,要去的位置是to,中间的位置是from
            hanoi(num-1,in,from,to);
        }
    }

结语

这是来自一个java小白的代码实现,还请各位大佬之指正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值