斐波那契数列的算法优化

python实现斐波那契数列的算法优化

斐波那契数列的具体实现原理就不需要再阐述了,就是具体的第n项等于前两项之和,其中第0项为0,第一项为1.当然你也看成从第一项开始,第一项和第二项都是1的数列。
所以我们最基本是算法就是一个递归就可以了。

def feb1(n):
    if 2 > n:
        return n
    else:
        return feb1(n - 1) + feb1(n - 2)

但是留心的同学可以发现当我们的项数比较大的时候,他的耗时非常大,电脑卡死也算不出来。这是因为这是一个算法效率极低的算法;因为在每一次递归的时候都是从第1项开始计算到第n-1项。存在非常多的代码重复。改进的思路就是对之前已经计算过的结果进行记忆。减少代码重复,这时候代码复杂度就从O(2^n)变成了O(n),大大提高了效率。

def feb2(n):
    now = 1
    last = 0
    while n > 1:
        now = last + now
        last = now - last
        n=n-1
    return now

这里可以计算一下耗时,你会发现,使用出现几个数量级的差异。n=50的时候,我已经无法等他计算了。而优化算法只需要10-5的时间。

import time
t1 =time.perf_counter()
print(feb1(50))
t2=time.perf_counter()
print(feb2(50))
t3=time.perf_counter()
print("time1:{}".format(t2-t1))
print("time2:{}".format(t3-t2))

感谢你的观看,欢迎讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值