N11.递归函数

1、递归的概念:在函数中调用自身函数

2、最大递归深度默认为997/998,这是python从内存的角度出发做出的限制

3、如果递归的次数太多,就不适合使用递归来解决问题

4、递归的缺点:占内存

5、递归的优点:会让代码变得简单

6、递归需要有一个明确的结束条件,并且每一次递归问题规模应该比上一次有所减小

7、递归函数举例:

# 递归函数求解斐波拉契数列
def fibo(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fibo(n-1) + fibo(n-2)

print(fibo(5))
>>>
5

# 上面函数我们可以简化为
def fibo(n):
    return 1 if n == 1 or n == 2 else fibo(n-1) + fibo(n-2) # 这里使用一个三元运算符,将代码简化

# 结合最近学习的匿名函数我们可以将代码简化为一行
fibo = lambda n : 1 if n == 1 or n == 2 else fibo(n-1) + fibo(n-2)
print(fibo(5))
>>>
5
# 递归函数求阶乘
def fio(n):
    if n == 0:
        return 1
    else:
        return n * fio(n-1)

print(fio(3))
>>>
6

# 简化代码
def fio(n):
    return 1 if n == 0 else n * fio(n-1)

#利用匿名函数

fio = lambda n : 1 if n == 0 else n * fio(n-1)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值