定义
在运行的过程中调用自己。
理解
所有的递归问题都可以用递推公式来表示,如下为递推公式。
f(n)=f(n-1)+1 其中,f(1)=1
写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后再推敲终止条件,最后将递推公式和终止条件翻译成代码。
使用递归满足的三个条件
- 一个问题的解可以分解为几个子问题的解。
- 问题与分解之后的子问题,除了数据规模不同,求解思路完全一样
- 存在递归终止条件
使用递归容易造成的问题
- 堆栈溢出
超过多少深度,进行报错。 - 警惕重复计算
通过一个数据结构(比如散列表)来保存已经求解过的。 - 脏数据