python--------递归函数

"""
   递归函数的三要素:
                1.递归的目的
                2.递归的边界
                3.递归表达式
"""

  经典递归示例:斐波那契数列

斐波那契额数列:1,1,2,3,5,8,13...
计算斐波那契数列:n=1,2 f(n-1)+f(n-2)=1; n>=3, f(n)=f(n-1)+f(n-2)   (递归)

 # 方式一:普通写法(针对数量不多的斐波那契)

def feibo(num):
    if num in (1, 2):
        return 1
    else:
        return feibo(num-1)+feibo(num-2)

if __name__ == '__main__':
    # 20个数的斐波那契数列
    for i in range(1, 21):
        print(feibo(i))

E:\myprogram\anaconda\python.exe E:/xx/Python/python.py
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765

Process finished with exit code 0

"""
   如何解决递归函数计算复杂度大的问题,采用缓冲区参与计算buffer(递归+buffer)
"""
def feibo(n, buffer):
    result = 0
    if n in buffer:
        return buffer[n]
    elif n in (1, 2):
        buffer[n] = 1
        return 1
    else:

        result = feibo(n-1, buffer)+feibo(n-2, buffer)
        buffer[n] = result
        return result

if __name__ == '__main__':
    buffer = {}
    for i in range(1, 51):
        print(feibo(i, buffer))

E:\myprogram\anaconda\python.exe E:/xx/Python/python.py
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
24157817
39088169
63245986
102334155
165580141
267914296
433494437
701408733
1134903170
1836311903
2971215073
4807526976
7778742049
12586269025

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值