java实现:汉诺塔核心代码大白话详解

最近XXX原因,比较久没写博客了,正好这会有点空就想写点东西。本来想写图相关算法,但是图相关东西比较多也比较复杂,一时也很难全面的写出来,即使写出来,也太零星反而更增加了读者的困惑。忽然想起来前两天有网友私信,说基础的递归如斐波那契算法能写出来,但是遇到稍微复杂点的就乱了,他看到小甲鱼教的汉诺塔算法懂原理了,但是看代码时还是感觉似懂非懂,理解的不是特别清晰。这个问题不大,几分钟就可以写好,正好适合现在写。博客链接:https://blog.csdn.net/wabiaozia/article/details/82822888

其实写递归时最简单的办法是递推出递归的公式,然后根据公式写递归。不过实际情况是,工作了不少年后不碰数学,对归纳公式有些抵触,碰到递归时更倾向于直接就开干,管他可不可以归纳出表达式。直接开干递归其实也有些技巧,防止你出现 '写代码时写着写着就乱了' 的问题。

如何设计递归算法:

1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理

递归算法更详细的介绍看:

https://www.bilibili.com/video/av7398130  用二进制来解汉诺塔问题

https://www.bilibili.com/video/av2975983/?p=34

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菠萝科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值