在 Python 中,递归函数(recursive function)就是函数自己调用自己,并且必须有一个终止条件,否则会无限递归导致报错(RecursionError)。
def func(参数):
if 终止条件:
return 结果
else:
return func(更小的参数)
✅ 关键点:
数学定义:
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
⚠️ 注意:这种写法效率低(重复计算多),实际项目中常用循环或缓存。
# 循环
def factorial_loop(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
✅ 循环效率高
✅ 递归代码更直观(逻辑清晰)
Python 默认递归深度有限(约 1000):
import sys
sys.setrecursionlimit(2000)
⚠️ 不建议随便改,深度太大容易栈溢出。
如果你愿意,我可以:
你想看哪一种?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。