zoukankan      html  css  js  c++  java
  • 05:递归

    1、递归==》DFS深度优先搜索、前中后序二叉树遍历

    递归求解问题的分解过程==》去的过程叫“递”,回来的过程叫“归”,基本上,所有的递归问题都可以用递推公式来表示

    2、递归需要满足的三个条件==》

    一个问题的解可以分解为几个子问题的解

    这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样

    存在递归终止条件

    3、递归代码==》递推公式,终止条件  找到将大问题分解为小问题的规律,并且基于此写出递推公式,然后再推敲终止条件,最终将递推公式和终止条件翻译成代码

    台阶问题==》f(n) = f(n-1) + f(n-2)  f(1) = 1 f(2) = 2

    4、递归问题==》如果一个问题A可以分解为若干子问题B、C、D,可以假设子问题B、C、D已经解决,在此基础上思考如何解决问题A。而且,只需要思考问题A与子问题B、C、D两层之间的关系即可,不需要一层一层往下思考子问题与子子问题,子子问题与子子子问题之间的关系

    5、递归代码要警惕堆栈溢出

    6、递归代码要警惕重复计算==》为了避免重复计算,可以通过一个数据结构(比如散列表)来保存已经求解过的f(k)。当递归调用到f(k)时,先看下是否已经求解过了。如果是,则直接从散列表中取值返回,不需要重复计算

    7、递归代码改为非递归代码==》迭代循环

  • 相关阅读:
    java.lang.OutOfMemoryError: Java heap space解决方法
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
    CSS中.和#区别
    斯坦福数据挖掘之LSH的应用
    N个元素的集合划分成互斥的两个子集的数目
    JDBC小结
    初识Java反射机制
    关于Java中重载的若干问题
    吐槽
    Tomcat
  • 原文地址:https://www.cnblogs.com/liushoudong/p/13508242.html
Copyright © 2011-2022 走看看