什么是递归?
递归就是一种直接或者间接的调用自身函数或者方法的算法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
递归的最大深度,如何解决?
递归的最大深度为 998,如果超过最大深度,会导致栈溢出
如何解决递归最大深度问题呢?
import sys
sys.setrecursionlimit(3000)
使用递归的意义
同一个问题可能有多种解法,但是在处理同一个问题的时候,不同的算法有不同的时间复杂度,根据需求使用递归算法,可有效降低了时间复杂度。
递归的优劣势
优点
实现简单,可读性好
缺点
递归调用,占用空间大
递归太深,容易发生栈溢出
可能存在重复计算
必要条件
- 解决问题时,可以把一个问题转化为一个新的问题,而这个新的问题的解决方法仍与原问题的解法相同,只是所处理的对象有所不同,这些被处理的对象之间是有规律的递增或递减;
- 可以通过转化过程是问题得到解决;
- 必定要有一个明确的结束递归的条件,否则递归将会无止境地进行下去,直到耗尽系统资源。
递归的使用场景
举一个非常常用的例子 无限极评论