前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fibonacci数列第n项的第7种计算方法:Python列表

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

作者头像
Python小屋屋主
发布2018-04-16 16:07:45
6380
发布2018-04-16 16:07:45
举报
文章被收录于专栏:Python小屋Python小屋

前面已经分享了几种计算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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档