-4

这是计算斐波那契的代码

import timeit
counter=0
def fibhelper(n):
  global counter
  counter+=1
  if n==0 :
     return 0
  elif n==1:
     return 1
  else:
     return fibhelper(n-1)+fibhelper(n-2)

print fibhelper(20)
print "Total function calls-- ",counter
t1=timeit.Timer('fibhelper(20)',"from __main__ import fibhelper")
y=t1.timeit()
print "normal method in secs: ",y

输出是:

6765
Total function calls-- 21891

它立即出来,但它仍在计算y。为什么是这样?当function快速评估时,为什么timeit需要function更长的时间?

4

1 回答 1

3

的默认参数timeit包括:number=1000000

引用以下文档timeit

...timeit()通过执行来运行它的方法number

因此,预计需要1000000倍的时间。

于 2013-11-12T18:29:31.060 回答