递归

作者: 温驭臣 | 来源:发表于2021-02-02 11:46 被阅读0次

    递归满足的三个条件

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

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

    3,存在递归的终止条件。

    如何编写递归代码?

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

    递归代码要警惕堆栈溢出。

    函数调用会使用栈来保存临时变量,每调用一个函数都会将临时变量封装为栈帧压入内存栈,等函数执行完成返回后才出栈。系统栈和虚拟机栈一版都不大,如果递归求解的数据规模很大,调用层次很深一直压栈,就会有堆栈溢出的风险。

    递归代码要警惕重复计算,所有的递归代码都可以改成这种迭代循环的非递归算法。

    相关文章

      网友评论

          本文标题:递归

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