【发布时间】:2014-03-14 12:27:28
【问题描述】:
我用来尝试解决这个问题的方法有效,但我认为它不是很有效,因为一旦我输入了一个太大的数字,它就不起作用了。
def fib_even(n):
fib_even = []
a, b = 0, 1
for i in range(0,n):
c = a+b
if c%2 == 0:
fib_even.append(c)
a, b = b, a+b
return fib_even
def sum_fib_even(n):
fib_evens = fib_even(n)
s = 0
for i in fib_evens:
s = s+i
return s
n = 4000000
answer = sum_fib_even(n)
print answer
例如,这不适用于 4000000,但适用于 400。有更有效的方法吗?
【问题讨论】:
-
在这篇文章中,提供了许多技术:stackoverflow.com/questions/18172257/…
-
行
a, b = b, a+b应该在if块之外。 -
如果那是 Project Euler 问题 2,那你就看错了。
-
“不起作用”是什么意思?错误答案、异常、崩溃?
-
“我用来尝试解决这个问题的方法有效”。你确定吗?对于我给它的任何输入,它只会给我零。这是在修复了
return fib_even的错误缩进之后。您能在这里仔细检查一下您的代码格式是否正确吗?