美文网首页
数据结构复习笔记 - 递归

数据结构复习笔记 - 递归

作者: ElegantLiar | 来源:发表于2019-12-24 17:30 被阅读0次

递归需要满足的三个条件

  • 一个问题的解可以分解为几个子问题的解
  • 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样
  • 存在递归终止条件

如何编写递归代码?

  • 写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后再推敲终止条件,最后将递推公式和终止条件翻译成代码
  • 编写递归代码的关键是,只要遇到递归,我们就把它抽象成一个递推公式,不用想一层层的调用关系,不要试图用人脑去分解递归的每个步骤。

注意

递归代码要警惕堆栈溢出

递归代码要警惕重复计算

总结

递归是一种非常高效、简洁的编码技巧。只要是满足“三个条件”的问题就可以通过递归代码来解决。

不过递归代码也比较难写、难理解。编写递归代码的关键就是不要把自己绕进去,正确姿势是写出递推公式,找出终止条件,然后再翻译成递归代码。

递归代码虽然简洁高效,但是,递归代码也有很多弊端。比如,堆栈溢出、重复计算、函数调用耗时多、空间复杂度高等,所以,在编写递归代码的时候,一定要控制好这些副作用。

相关文章

  • 数据结构复习笔记 - 递归

    递归需要满足的三个条件 一个问题的解可以分解为几个子问题的解 这个问题与分解之后的子问题,除了数据规模不同,求解思...

  • 关于考试复习及准备的想法

    考试复习的准备: MIT - 线性代数 ~ 笔记本 xuetangx - 数据结构 ~ 笔记本 高数 & 线代 &...

  • 2018-11-01

    增加淘宝店宝贝 英语趣配音 日常口语对话 课程复习预习整理笔记 练习编程 复习高数线代 复习数据结构 学习c++ ...

  • python数据结构教程 Day6

    python数据结构教程 Day6 本节重点 递归定义 递归调用的实现 简单递归的应用 一、递归 在python基...

  • 反转链表(java实现)

    链表反转 节点数据结构如下: 链表反转的两种方式:递归和非递归 递归方式如下: 非递归方式如下:

  • 郝斌C

    注意: 课程注意的地方:59、74、递归在数据结构 笔记: 公式:被除数/除数=商取余%的运算对象必须是整数,结果...

  • Clojure 学习笔记 :10 美妙的递归

    Clojure 零基础 学习笔记 递归 尾递归 Clojure 学习笔记 :10 美妙的递归 递归,或者说函数的递...

  • 考研专业课 | 计算机专业基础综合815之严蔚敏《数据结构》考研

    考研计算机专业基础综合815之严蔚敏《数据结构》考研复习重点笔记及考研真题详解 复习笔记【节选自识库学习网,如需转...

  • 数据结构与算法大纲

    王争课程笔记 10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树 10 个算法:递归...

  • 递归的Java实现

    算法 数据结构——递归的运行机制:递归的微观解读 递归是一种应用非常广泛的算法(或者编程技巧)。递归求解问题的分解...

网友评论

      本文标题:数据结构复习笔记 - 递归

      本文链接:https://www.haomeiwen.com/subject/fsufoctx.html