算法之递归

算法中的递归还是一个比较难理解的知识点,为什么呢,因为递归的流程很难按大脑易理解的流程一步步的走一遍,尤其是涉及多个递归条件的。

递归三要素:

1、可分解,大问题可以分解成几个小问题

2、有规律,只跟规模有关,求解思路相同

3、能终止,最后有个终止条件

举例说明:

如黄金分割数列:

f(n) = f(n-1) + f(n-2)

分解成了两个小问题

从3开始,一直遵循当前数等于前一个数值加前前个数值。

当n为2或1时,既为终止条件。

技巧:

1、找到n和已知条件的规律,如例子中的n-1 + n -2。

2、列出终止条件附近的数字结果,像总结数学规律一样总结规律,得出递推公式。

注意:

注意递归太深导致堆栈溢出

递归可能导致较多重复计算,可以通过散列表辅助,把已经计算过的存起来复用。

总结:

递:通过一定的规律,逐步放出去的过程

归:通过对每次计算结果的计算累计收回来的过程。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 几个月之前就想写这样一篇文章分享给大家,由于自己有心而力不足,没有把真正的学到的东西沉淀下来,所以一直在不断...
    小鹿动画学编程阅读 1,654评论 2 14
  • 一、什么是递归? 1.递归是一种非常高效、简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索、前中后序...
    我是码神阅读 359评论 0 0
  • 递归:如何用三行代码找到“最终推荐人” 推荐注册返佣金的这个功能我想你应该不陌生吧?现在很多 App 都有这个功能...
    GhostintheCode阅读 1,260评论 0 6
  • 前言 递归是算法中一种非常重要的思想,应用也很广,小到阶乘,再在工作中用到的比如统计文件夹大小,大到 Google...
    谢kun阅读 8,155评论 0 15
  • 春来花已盛 情浓酒正酣 感怀千里客 醉卧柳下寒
    淘幺幺阅读 440评论 4 8