您当前的位置:首页 > 计算机 > 编程开发 > Python

Fibonacci数列第n项的第7种计算方法:Python列表

时间:01-07来源:作者:点击数:

前面已经分享了几种计算Fibonacci数列第n项的方法,详见Python快速计算Fibonacci数列中第n项的方法三种Fibonacci数列第n项计算方法及其优劣分析,本文分享第7种(过几天分享第8种),主要演示列表的append()和pop()这两个方法和反向索引的用法。如果n小的话,可以只append()不pop()(注意,这样的话append()的参数要改为data[-1]+data[-2]),但是如果n很大的话会导致内存崩溃。

下面的代码使用第800万项对本文的第7种方法和前面6种中最快的方法3进行了测试和对比,事实证明,算法3是无敌的,也是最简单的。

大家不妨分析一下,本文的方法7比方法3慢的原因是什么?

from time import time

def fibo3(n):

    a, b = 1, 1

    for i in range(2, n+1):

        a, b = b, a+b

    return a

def fibo7(n):

    data = [1, 1]

    for _ in range(2, n):

        data.append(sum(data))

        data.pop(0)

    return data[-1]

n = 8000000

for fibo in (fibo3, fibo7):

    start = time()

    r = str(fibo(n))

    print(fibo.__name__,

          len(r),

          sep=':',

          end=':')

    print(time()-start)

运行结果:

fibo3:1671901:619.382312297821

fibo7:1671901:1148.716125011444

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门