这几天学了点python,有一道题是让练习用python计算fibonacci数列,发现个很有意思的事:
当用传统的写法
return fib(n-1) + fib(n-2)
来算fib(40)的时候,算得超级慢,分钟级别的
而用generator的时候
def fib():
a = 1
b = 2
while 1:
a, b = b, (a+b)
yield a
counter = 0
for n in fib():
if counter == 40:
print n
break
counter +=1
瞬间就计算完了
后来,在这个链接里http://fengmk2.cnpmjs.org/blog/2011/fibonacci/nodejs-python-php-ruby-lua.html 发现了各种语言算fib(40)的效率
我很纳闷的是:
最后几种语言花费的时间跟python一样,都竟然达到1m,2m,甚至3m,
说得夸张一点,人脑算得都比它们快,
那么,问题来了,如题
当用传统的写法
return fib(n-1) + fib(n-2)
来算fib(40)的时候,算得超级慢,分钟级别的
而用generator的时候
def fib():
a = 1
b = 2
while 1:
a, b = b, (a+b)
yield a
counter = 0
for n in fib():
if counter == 40:
print n
break
counter +=1
瞬间就计算完了
后来,在这个链接里http://fengmk2.cnpmjs.org/blog/2011/fibonacci/nodejs-python-php-ruby-lua.html 发现了各种语言算fib(40)的效率
我很纳闷的是:
最后几种语言花费的时间跟python一样,都竟然达到1m,2m,甚至3m,
说得夸张一点,人脑算得都比它们快,
那么,问题来了,如题