04_python基础_递归函数
递归函数
如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数
递归函数的组成部分
递归调用表达式 + 递归终止条件
递归调用的过程
没递归调用一次函数,都会在栈内分配一个栈帧,
没执行完一次函数,都会释放相应的空间
递归的优缺点
优点:思路和代码简单
缺点:占用内存较多,效率低下
实例1:使用递归计算6的阶乘
解释:6! = 6x5x4x3x2x1
n! = 6x5! -> n*f(n-1)
= 6x5x4! -> n*(n-1)*f(n-2)
= 6x5x4x3!
= 6x5x4x3x2!
= 6x5x4x3x2x1! -> n*(n-1)*(n-2)*(n-3)*...*f(1)
终止条件:n==1
向下递归表达式:n*f(n-1)
代码:
def fac(n):
# 终止条件
if n==1:
return 1
# 递归调用
res = n * fac(n-1)
return res
print(fac(6)) # 720
实例2:使用递归计算斐波那契数列fib(6)
斐波那契数列:1 1 2 3 5 8... (从第三个位置开始,等于前两项的和)
fib(1) = 1
fib(2) = 1
fib(3) = fib(2) + fib(1)
fib(4) = fib(3) + fib(2)
fib(5) = fib(4) + fib(3)
...
fib(n) = fib(n-1) + fib(n-2)
终止条件:
if n==1: return 1
elif n==2: return 2
向下递归表达式:fib(n) = fib(n-1)*fib(n-2)
代码:
def fib(n):
# 终止条件
if n==1:
return 1
elif n==2:
return 1
# 递归调用
res = fib(n-1) + fib(n-2)
return res
print(fib(6)) # 8
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现