递归是函数调用自身的编程方法,需满足基线条件和递归条件。如阶乘函数通过n=0或1停止递归,否则调用factorial(n-1)。优点是代码简洁、逻辑清晰,适合树结构与分治问题;缺点是效率低、易触发RecursionError、内存占用高。可通过记忆化(如@lru_cache)或改写为迭代优化性能。掌握递归关键在于明确“问题缩小”和“终止条件”,编写时先确定基线再设计递推。
递归算法是指在函数定义中调用自身的一种编程方法。在 Python 中,递归常用于解决可以分解为相同问题但规模更小的子问题的情况,比如计
算阶乘、斐波那契数列、遍历树结构等。
一个有效的递归函数必须满足两个条件:
以计算阶乘为例:
def factorial(n):这段代码中,factorial 函数不断调用自己,直到 n 缩小到 0 或 1,然后逐层返回结果。
优点:
缺点:
RecursionError(超过最大递归深度)。可以通过以下方式改进递归性能:
@lru_cache 装饰器。基本上就这些。掌握递归关键是理解“把大问题变小”和“何时停止”。写的时候先想清楚基线条件,再写递推逻辑,不容易出错。