【发布时间】:2012-10-10 21:26:07
【问题描述】:
我目前正在尝试计算阶乘递归的时间,但我找不到在每个递归步骤中打印每个阶乘的方法。现在我尝试在 return 语句中打印它,这可以解决我的问题,但结果只是一堆乱七八糟的文字墙,时间分散。
编辑:我应该提一下,我正在尝试获取整个过程的累积时间,而不是像下面打印语句那样的零散结果。
我尝试了类似的方法:
return (str(n) + '! = ' + (str(FactResult)) +
' - Runtime = %.9f seconds' % (end-start))
但这是我现在下面的内容。
import time
def factorial(n):
"""Factorial function that uses recursion and returns factorial of
number given."""
start = time.clock()
if n < 1:
return 1
else:
FactResult = n * factorial(n - 1)
end = time.clock()
print(str(n) + '! - Runtime = %.9f seconds' % (end-start))
return FactResult
【问题讨论】:
-
看起来缩进搞砸了。你显然不能使用第一个返回,因为那是一个字符串,除非你想每次都解析出它的值。
-
请注意:递归不是最快的实现。
-
我不清楚您要打印什么时间?每个步骤需要多长时间才能完成?还是要累积时间?
-
也许可以查看 timeit 或 profile 模块...
-
那为什么不干脆做
start = time.clock(); factorial(n); print time.clock() - start之类的事情呢?另请参阅timeit
标签: python python-3.x