首页 > 分享 > 斐波那契数列python实现,时间/空间复杂度比较

斐波那契数列python实现,时间/空间复杂度比较

最新推荐文章于 2021-02-16 08:57:55 发布

@you_123 于 2019-10-15 20:45:19 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

斐波那契数列即
1,1,2,...,f(n)=f(n-1) + f(n-2)
第n项等于第(n-1)项与第(n-2)项之和。

关于斐波那契数列的实现,最简单的一种,大家都会想到:

def fib1(n):if n==0 or n==1:return 1else:return fib1(n-1) + fib1(n-2) print(fib1(n)) 123456

但是这种方法的时间复杂度特别高,为O(2^n),一般在计算到n=40以上就很慢了。原因是代码执行时进行了很多重复计算。

所以,为了提高代码效率,可以使用如下方法:

def fib2(n):li=[1,1]for i in range(2,n+1):li.append(li[-1]+li[-2]) #最后一项,加上倒数第二项return li[n] print(fib2(n)) 123456

计算快很多。时间复杂度为O(n)。

还有一种方法,是时间复杂度与fib2相同,但是占用的空间较小:

def fib3(n):a=1b=1c=1for i in range(2,n+1):c=a+ba=bb=creturn c print(fib3(n)) 12345678910

相关知识

六、Python 基础语句
直接推导获得解答(分析)
兔子几个月开始繁殖
怎样让宝贝吃嘛嘛香?看看别家铲屎官都是怎么说的吧!
北京海关查获鹦鹉螺!外壳刻画黄金螺旋线,里面藏着4亿年秘密
scala小练习三
《战神:升天》怪物百科:波呂斐摩斯
在科学史上,都有哪些有名的科学家和他的动物
数学界有个图书馆“扫地僧”,凭着一己之力,完成了第一张素数表
狗狗币拉力赛24%,目标0.20美元,社交提及量飙升11.48K

网址: 斐波那契数列python实现,时间/空间复杂度比较 https://m.mcbbbk.com/newsview809732.html

所属分类:萌宠日常
上一篇: 如何卜卦找宠物,宠物丢失算卦
下一篇: 【项目】洗澡 带橘猫去洗澡,团购