你看看你递归代码的复杂度 是O(2^n) 而第二个的复杂度是O(n) 运行效率当然不同

COUNTER = 0

def fibn(n):

global COUNTER

COUNTER += 1

if n == 0:

return 1

elif n == 1:

return 1

else:

return fibn(n-1) + fibn(n-2)

statistics = []

for i in range(35):

COUNTER = 0

fibn(i + 1)

statistics.append(((i + 1), COUNTER))

print statistics[(1, 1), (2, 3), (3, 5), (4, 9), (5, 15), (6, 25), (7, 41), (8, 67), (9, 109), (10, 177), (11, 287), (12, 465), (13, 753), (14, 1219), (15, 1973), (16, 3193), (17, 5167), (18, 8361), (19, 13529), (20, 21891), (21, 35421), (22, 57313), (23, 92735), (24, 150049), (25, 242785), (26, 392835), (27, 635621), (28, 1028457), (29, 1664079), (30, 2692537), (31, 4356617), (32, 7049155), (33, 11405773), (34, 18454929), (35, 29860703)]

做了一个简单的proflie

import cProfile

import pstats

def fibn(n):

if n == 0:

return 1

elif n == 1:

return 1

else:

return fibn(n-1) + fibn(n-2)

print ' i, calls, time'

for i in range(50):

pr = cProfile.Profile()

pr.enable()

fibn(i)

pr.disable()

stats = pstats.Stats(pr)

stats.strip_dirs()

st = stats.stats[('test1.py', 3, 'fibn')]

print '%3d,%10d,%8f' % (i, st[1], st[3])i, calls, time

0, 1, 0.000000

1, 1, 0.000001

2, 3, 0.000003

3, 5, 0.000005

4, 9, 0.000008

5, 15, 0.000012

6, 25, 0.000020

7, 41, 0.000033

8, 67, 0.000165

9, 109, 0.000088

10, 177, 0.000141

11, 287, 0.000228

12, 465, 0.000450

13, 753, 0.000601

14, 1219, 0.001016

15, 1973, 0.003561

16, 3193, 0.002593

17, 5167, 0.004372

18, 8361, 0.007097

19, 13529, 0.011073

20, 21891, 0.018552

21, 35421, 0.032467

22, 57313, 0.051762

23, 92735, 0.095383

24, 150049, 0.133490

25, 242785, 0.212390

26, 392835, 0.352861

27, 635621, 0.578204

28, 1028457, 0.987839

29, 1664079, 1.506812

30, 2692537, 2.682802

31, 4356617, 3.998936

32, 7049155, 8.089419

33, 11405773, 13.058235

34, 18454929, 23.930004

35, 29860703, 36.503880

目测fibn(50)要算出来需要两周

递归函数斐波那契数列python_使用Python函数递归实现斐波那契数列时为什么运行速度很慢?...相关推荐

  1. python函数递归 斐波那契数列

    4.7 python函数递归 斐波那契数列 代码:(利用递归.format输出等) def fibonacci(n):if n==1 or n==2:f=1else:f=fibonacci(n-1)+ ...

  2. 用python语言编斐波那契数列_用python函数写斐波那契数列

    斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上, ...

  3. Python:递归输出斐波那契数列

    今天学习Python的时候做一道练习题,题目是这样的: 题目 导入 问题 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总对数 ...

  4. fibonacci数列python_从 Python 计算 Fibonacci 数列说起

    从 Python 计算 Fibonacci 数列说起 09 Oct, 2012 编程语言之争,争到最后大都就是在争论速度了,速度当然很重要,毕竟现实的物理设备和人类的想象力之间差距还是蛮大的,然而比较 ...

  5. python函数递归求和详解_Python递归函数详细分析

    什么是递归? 递归,就是在函数运行中自己调用自己 代码示例: def recursion(n): # 定义递归函数 print(n) # 打印n recursion(n+1) # 在函数的运行种调用递 ...

  6. python使用递归实现斐波那契数列

    递归简而言之就是函数自己调用自己,在python中,会自动限制调用次数防止造成内存溢出 下面时使用递归的方法实现斐波那契数列取值的代码 def fibonacci(n):if n == 1 or n ...

  7. python 函数 1.1 斐波拉契数列:这个数列从第三项开始,每一项都等于前两项之和。

    题目:  已知斐波拉契数列的前两项都是1,我们定义求斐波拉契数列的第n项(n<=50)的函数为fbnq,程序主体如下: n=int(input("")) print(fbnq ...

  8. 离散小波变换 python_用python中的“haar”小波对图像进行离散小波变换

    我试图在python中的图像上应用haar小波.这是代码from pywt import dwt2, idwt2 img = cv2.imread('xyz.png') cA, (cH, cV, cD ...

  9. python 函数递归一次增加一次变量_python3--函数(函数,全局变量和局部变量,递归函数)...

    1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合. 函数名:就相当于是程序代码集合的名称 参数:就是函数运算时需要参与运算的值被称作为参数 函数体:程序的某个 ...

最新文章

  1. 【MATLAB】稀疏矩阵(含有大量0元素的矩阵)
  2. 一句话后门中eval和assert的区别
  3. 一份MyBaits框架PDF文档,阿里架构师直言,Java程序员快收藏吧
  4. 崩坏3服务器维护多久,崩坏35月28日停服维护多久?4.0版本更新内容汇总[图]
  5. sync.Map低层工作原理详解
  6. 互联网产品的灰度发布
  7. uni-app阻止事件冒泡
  8. Java中矩阵运算(math3的使用)
  9. oracle中日期相减及显示几天几小时几分钟
  10. error: ‘for‘ loop initial declarations are only allowed in C99 mode
  11. Linux安装SSH
  12. 联想z510笔记本拆机
  13. linux内核网络协议栈学习笔记:关于GRO/GSO/LRO/TSO等patch的分析和测试
  14. 5种方案实现订单30分钟未支付,则自动取消
  15. 故杀敌者,怒也;取敌之利者,货也
  16. 数据结构实验-学生信息表
  17. 面试大厂,我是这样准备项目的
  18. sqlmap总出现missing a mandatory option的解决方法
  19. 2020-02-09
  20. PO/POJO/BO/DTO/VO的区别【转】

热门文章

  1. docker – 你应该知道的10件事
  2. 复习深入笔记01:对象/可变与不可变类型/字符编码/闭包
  3. 04-1.jQuery事件与补充each/data
  4. WIN10 查看已经连接的wifi的密码
  5. java 物理内存_聊聊Java中的内存
  6. [转]Android 代码混淆和加固 so库 简单教你一行代码实现
  7. 关于jQuery.query.js 取参数的一个小问题
  8. Android之解决ViewPager2+PhotoView滑动图片花屏问题
  9. Android之Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
  10. 这个公式竟然堪称数学界的画家......