一、斐波那契数列求第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)
结果:
递归时间:
循环时间:

所以实际开发中还是用循环。

完。

最新文章

  1. unity3d 射弹基础案例代码分析
  2. apt-get update更新源时,出现“Hash Sum mismatch”问题
  3. 3D全景!这么牛!!
  4. .NET 4.0 MemoryCache with SqlChangeMonitor
  5. 运行第一个Node.js程序
  6. 第四十六篇、UICollectionView广告轮播控件
  7. 优化Hoax or what的思考
  8. CSS3最简洁的轮播图
  9. JavaScript 之 关键内容
  10. win7系统u盘安装过程
  11. IIS启用GZip压缩
  12. Python+Appium 查找 toast 方法的封装
  13. 使用Fraps获取3D程序的FPS
  14. 设置linux新用户默认当前目录及使用的shell
  15. Matplotlib新手上路(中)
  16. 文件寄生——寻找宿主的不归路(NTFS文件流实际应用)
  17. 【DB2】数据迁移
  18. php5.4安装fileinfo扩展
  19. Game Loop的几种实现方式
  20. 从零开始一个http服务器(五)-模拟cgi

热门文章

  1. Java基础(三)--final关键字
  2. 比较synchronized和读写锁
  3. 母牛的故事(hdoj 2018,动态规划递推,详解)
  4. JSP页面中的指令标识
  5. BNUOJ 26224 Covered Walkway
  6. SGU 485 Arrays
  7. 常州模拟赛d8t2 绘画
  8. 开源的多行字符串工具: 在JS中整段地写HTML
  9. java 源码分析1 -String
  10. pt工具加字段脚本