最近XXX原因,比较久没写博客了,正好这会有点空就想写点东西。本来想写图相关算法,但是图相关东西比较多也比较复杂,一时也很难全面的写出来,即使写出来,也太零星反而更增加了读者的困惑。忽然想起来前两天有网友私信,说基础的递归如斐波那契算法能写出来,但是遇到稍微复杂点的就乱了,他看到小甲鱼教的汉诺塔算法懂原理了,但是看代码时还是感觉似懂非懂,理解的不是特别清晰。这个问题不大,几分钟就可以写好,正好适合现在写。博客链接:https://blog.csdn.net/wabiaozia/article/details/82822888
其实写递归时最简单的办法是递推出递归的公式,然后根据公式写递归。不过实际情况是,工作了不少年后不碰数学,对归纳公式有些抵触,碰到递归时更倾向于直接就开干,管他可不可以归纳出表达式。直接开干递归其实也有些技巧,防止你出现 '写代码时写着写着就乱了' 的问题。
如何设计递归算法:
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理
递归算法更详细的介绍看:
1 https://www.bilibili.com/video/av7398130 用二进制来解汉诺塔问题