温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python递归函数怎么写

发布时间:2026-09-24 22:16:50 来源:亿速云 阅读:103 作者:小樊 栏目:编程语言

在 Python 中,递归函数(recursive function)就是函数自己调用自己,并且必须有一个终止条件,否则会无限递归导致报错(RecursionError)。


一、递归函数的基本结构

def func(参数):
    if 终止条件:
        return 结果
    else:
        return func(更小的参数)

✅ 关键点:

  1. 有明确的结束条件
  2. 每次递归都在向结束条件靠近

二、经典示例:阶乘(n!)

数学定义:

n! = n × (n-1) × ... × 1

递归写法

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

print(factorial(5))  # 120

执行过程

factorial(5)
= 5 * factorial(4)
= 5 * 4 * factorial(3)
= 5 * 4 * 3 * factorial(2)
= 5 * 4 * 3 * 2 * 1

三、斐波那契数列(递归)

def fib(n):
    if n == 0:
        return 0
    if n == 1:
        return 1
    return fib(n - 1) + fib(n - 2)

print(fib(10))  # 55

⚠️ 注意:这种写法效率低(重复计算多),实际项目中常用循环或缓存。


四、递归的应用场景

  • 树 / 目录结构遍历
  • 分治算法(快排、归并)
  • 回溯算法(迷宫、八皇后)
  • 数学表达式解析

五、递归 vs 循环(简单对比)

# 循环
def factorial_loop(n):
    result = 1
    for i in range(1, n + 1):
        result *= i
    return result

✅ 循环效率高
✅ 递归代码更直观(逻辑清晰)


六、递归深度限制

Python 默认递归深度有限(约 1000):

import sys
sys.setrecursionlimit(2000)

⚠️ 不建议随便改,深度太大容易栈溢出。


如果你愿意,我可以:

  • 用 生活例子 解释递归
  • 写一个 目录递归遍历示例
  • 帮你把 某段代码改成递归

你想看哪一种?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手