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
posted @   漂洋过海去见你  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示