我在使用 itertools.count 函数时遇到了一些问题,我不太明白它的作用。我希望下面的代码能够完成Project Euler 问题 2。
我知道我可以用一个简单的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)