【发布时间】:2017-12-26 20:09:07
【问题描述】:
斐波那契数列中的每个新项都是通过添加前两项来生成的。从 1 和 2 开始,前 10 个术语将是:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
通过考虑斐波那契数列中值不超过四百万的项,求偶数项之和。
我的程序打印的是 4613731,但它应该是 4613732。问题出在哪里?
def fib(n):
if n == 0:
return 1
elif n == 1:
return 2
else:
return fib(n-1)+fib(n-2)
tot = 0
n = 0
while fib(n) <= 4000000:
if fib(n) % 2 != 0:
tot += fib(n)
n += 1
print(tot, n)
【问题讨论】:
-
你不是对奇数值求和吗?
-
每
n计算fib(n)三次,保持优化。 -
@Arman Uh... 与他们真正这样做的频率相比,三遍实际上非常好。
-
你的结果 4613731 很奇怪应该是一个线索......
-
@ubadub 因为他们认为他们是对偶数求和,而偶数之和是偶数。因此,当他们看到奇数和时,他们应该意识到他们不是对偶数求和。
标签: python project fibonacci solution eulers-number