数据结构与算法之美--知识点五:递归

10 | 递归:如何用三行代码找到“最终推荐人”?

基本上,所有的递归问题都可以用递推公式来表示

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

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

堆栈溢出,限制递归深度

为了避免重复计算,可以通过一个数据结构(比如散列表)来保存已经求结果的f(k)

递归代码改写成非递归代码

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

你可能感兴趣的:(Algorithm)