找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3472|回复: 0

从Fibonacci数组看迭代,生成器和循环的效率

11

主题

35

帖子

35

积分

贫民

积分
35
zy1 发表于 2014-9-12 11:13:44 | 显示全部楼层 |阅读模式
通过Fibonacci的迭代,生成器,循环三种实现,观察迭代,生成器,循环的效率。
结论:迭代效率非常低,生成器和循环相近
一下是代码和运行时间
import sys

def fibo(n):
    if n < 2: return 1
    else: return fibo(n-1) + fibo(n-2)

n = int(sys.argv[1])
fibo(n)

结果:
n | 运行时间
10 0.01
30 0.3
35 3.0

import sys

def fibo(n):
    if n < 2: return 1
    f, f0, f1 = 1, 1, 1
    while n > 1:
        n -= 1
        f = f0 + f1
        f0 = f1
        f1 = f
    return f

n = int(sys.argv[1])
fibo(n)

结果:
n | 运行时间   
10 0.01
100000 0.2  
1000000 13

import sys

def fibo(n):
    a, b = 1, 1
    while n > 0:
        yield a
        a, b = b, a + b
           n -= 1

n = int(sys.argv[1])
for i in fibo(n):
    pass

结果:
n | 运行时间

10 0.01
100000 0.16
1000000 13.0

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表