我在itertools.count函數中遇到了一些麻煩,我不太明白它的作用。我期望下面的代碼完成Project Euler problem 2。Python求和itertools.count?
我知道我可以用一個簡單的while循環來寫這個,但是有沒有辦法用列表理解來實現呢?這個代碼只是凍結,因爲我猜它會用count()去無窮大。我希望它會在x> MAX後停止,但我知道這不會發生。有沒有辦法阻止像下面的生成器表達式計數?
def fib(n):
if (n <= 1): return 1
else: return fib(n-1) + fib(n-2)
MAX = 4000000
infiniteFib = (fib(x) for x in count())
s = (x for x in infiniteFib if x < MAX and x % 2 == 0)
print sum(s)
無論哪種方式,這是計算斐波那契數值的一個*非常*低效的函數。過了30多歲的任何事情都會在我的機器上永久返回,而且這是相當健壯的。 – NullUserException
我有記憶的實際功能,所以它不是壞事。 –
哦,繼續吧。 – NullUserException