【发布时间】:2017-06-18 12:43:40
【问题描述】:
对于 Python 3,是否有可能在特定时间跨度内的函数中找到可能的最高计算数? 例如,如果某件事几乎需要“永远”,有没有办法找出在 1 分钟内计算出的最大可能数字?
代码如下:
def fibonacci5(n):
f1, f2 = 1, 0
while n > 0:
f1, f2 = f1 + f2, f1
n -= 1
return f2
我正在尝试使用可能的解决方案来通过 timeit 查找需要 1 秒的数字。
repeats = 10
t = timeit.Timer("fibonacci5(500000)", globals=globals())
time = t.timeit(repeats)
print ("average execution time:", time/repeats)
但是 500.000 平均需要 2.6 秒,而 250.000 平均需要 0.6 秒 - 所以这个解决方案无法工作。
【问题讨论】:
-
这完全取决于算法是什么。我们需要更多背景信息。
-
这里是计算斐波那契数。
-
好吧,斐波那契数列是无限的,所以任何曾经编写过的斐波那契函数都需要能够在序列结束之前停止。您是否查找过斐波那契函数的实现?
-
至于在一分钟内尽可能多地计算广告:一旦你了解了如何停止序列,你就可以计算出你在一秒钟内可以进行多少次迭代,然后乘以 60,然后你有你的极限。或者计算每次迭代需要多长时间,然后将 60 除以该时间长度。
-
如果您将其实现为生成中间值的生成器函数,您可以在检查已过去多少时间的同时迭代该函数。如果您将函数的代码添加到您的问题中,如果您不理解,我们可以告诉您如何操作。
标签: python python-3.x time max