递归
递归是一种高效简介的编码方式,通过调用自身,完成函数的计算或运行,譬如数组里每个数都是在前面一个数的基础上乘一个数,知道初始数值的时候就可以使用递归来求解第N个数值的值。
递归可解决的问题
递归解决的问题一般满足三个条件
1、问题可以分解为子问题的解。
2、问题和子问题除了数据不同,求解思路都相同。
3、存在递归终止条件。
递归的优劣势
优点:代码可读性很高,编写容易。
缺点:空间复杂度高,容易出现堆栈溢出、重复计算、数据过多会耗时巨大等问题。
1.警惕堆栈溢出:可以声明一个全局变量来控制递归的深度,从而避免堆栈溢出。
2.警惕重复计算:通过某种数据结构来保存已经求解过的值,从而避免重复计算。