全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-19 6 分钟 ✍️ juanwangdev

Python递归函数

递归是函数调用自身的编程技术,核心在于定义基准条件和递归条件。

递归基本结构

标准形式

Python
def recursive_function(n):
    # 基准条件:终止递归
    if n <= 1:
        return 1
    # 递归条件:问题规模缩小
    return n * recursive_function(n - 1)

核心要素

  1. 基准条件:终止递归的条件
  2. 递归条件:调用自身并缩小问题规模

经典示例

阶乘计算

Python
def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)

print(factorial(5))  # 120

斐波那契数列

Python
def fibonacci(n):
    if n <= 0:
        return 0
    if n == 1:
        return 1
    return fibonacci(n - 1) + fibonacci(n - 2)

print(fibonacci(10))  # 55

遍历嵌套列表

Python
def flatten_list(nested_list):
    result = []
    for item in nested_list:
        if isinstance(item, list):
            result.extend(flatten_list(item))
        else:
            result.append(item)
    return result

print(flatten_list([1, [2, 3], [4, [5, 6]]]))  # [1, 2, 3, 4, 5, 6]

递归深度限制

Python 默认递归深度限制为 1000 层。

查看限制

Python
import sys
print(sys.getrecursionlimit())  # 1000

修改限制

Python
import sys
sys.setrecursionlimit(2000)  # 设置为 2000

修改递归深度限制需谨慎,过深递归可能导致栈溢出。

无限递归后果

Python
def infinite_recursion():
    return infinite_recursion()

infinite_recursion()  # RecursionError: maximum recursion depth exceeded

递归 vs 迭代

递归实现

Python
def sum_recursive(n):
    if n <= 0:
        return 0
    return n + sum_recursive(n - 1)

迭代实现

Python
def sum_iterative(n):
    result = 0
    for i in range(1, n + 1):
        result += i
    return result

迭代通常比递归效率更高,但递归代码更简洁直观。

递归优化

尾递归优化思路

Python
# 非尾递归
def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)  # 乘法在递归调用之后

# 尾递归形式(Python 不优化,但思想值得学习)
def factorial_tail(n, accumulator=1):
    if n <= 1:
        return accumulator
    return factorial_tail(n - 1, n * accumulator)

Python 不支持尾递归优化,深度递归应考虑迭代替代。

要点总结

  1. 递归必须包含基准条件和递归条件
  2. 每次递归调用必须缩小问题规模
  3. Python 默认递归深度限制 1000 层
  4. 深度递归考虑使用迭代替代
  5. 递归适合处理树形结构、分治问题

📝 发现内容有误?点击此处直接编辑

← 上一篇 Python返回值与多返回值
下一篇 → Python默认参数
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库