基础

递归需要满足三个条件

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

写递归的关键是写出递推公式,找到终止条件

弊端

一:要警惕堆栈溢出
为什么会有堆栈溢出风险,如何应对

可以考虑设置递归深度

二:要警惕重复计算
可以考虑用散列表保存已经求解的数据

三:过多的函数调用会耗时较多

四:空间复杂度高

应用