[算法基础]斐波那契(recursion+loop)两种方式执行时间对比
2024-08-31 00:13:45
一、斐波那契数列求第n项两种方式
1.递归(自上而下)
def recur_fibonacci(n):
if n <= 0:
return 0
if n == 1:
return 1 return recur_fibonacci(n - 1) + recur_fibonacci(n - 2) 2.循环(自下而上)
def loop_fibonacci(n):
a = 0
b = 1
l = [0] # 这里的l是把生成的斐波那契数列返回了
for i in range(n):
a, b = b, a + b
l.append(a)
return a, l
递归计算太慢,重复计算太多,时间复杂度是以n的指数方式递增,举个栗子:
from datetime import datetime start = datetime.now()
ret = recur_fibonacci(30)
end = datetime.now()
print(u'递归时间:%s'%(end - start).microseconds) start = datetime.now()
ret2 = loop_fibonacci(30)
end = datetime.now()
print(u'循环时间:%s'%(end - start).microseconds)
结果:
递归时间:
循环时间:
所以实际开发中还是用循环。
完。
最新文章
- unity3d 射弹基础案例代码分析
- apt-get update更新源时,出现“Hash Sum mismatch”问题
- 3D全景!这么牛!!
- .NET 4.0 MemoryCache with SqlChangeMonitor
- 运行第一个Node.js程序
- 第四十六篇、UICollectionView广告轮播控件
- 优化Hoax or what的思考
- CSS3最简洁的轮播图
- JavaScript 之 关键内容
- win7系统u盘安装过程
- IIS启用GZip压缩
- Python+Appium 查找 toast 方法的封装
- 使用Fraps获取3D程序的FPS
- 设置linux新用户默认当前目录及使用的shell
- Matplotlib新手上路(中)
- 文件寄生——寻找宿主的不归路(NTFS文件流实际应用)
- 【DB2】数据迁移
- php5.4安装fileinfo扩展
- Game Loop的几种实现方式
- 从零开始一个http服务器(五)-模拟cgi