这个问题在这里已经有了答案:
10年前关闭。
嘿,我正在尝试编写一个脚本,将“斐波那契数列”中的所有偶数项汇总到 400 万以下。
Fibonacci1 = 1
Fibonacci2 = 2
a = 2
i = 4
for i in range(1,4000000):
Fibonacci1 = Fibonacci1 + Fibonacci2
if Fibonacci1 % 2 == 0:
a = a + Fibonacci1
Fibonacci2 = Fibonacci1 + Fibonacci2
if Fibonacci2 % 2 == 0:
a = a + Fibonacci2
print a
raw_input()
它应该需要不到一分钟的时间,但是花了整整一夜都没有解决!
编辑:对不起,伙计们,我误解了这个问题。我虽然这意味着我必须将所有偶数项相加至 400 万!但解决方案是将所有偶数项相加,直到 400 万。
工作代码(不到一秒完成):
Fibonacci1 = 1
Fibonacci2 = 2
a = 2
while a < 4000000:
Fibonacci1 = Fibonacci1 + Fibonacci2
if Fibonacci1 % 2 == 0:
a = a + Fibonacci1
Fibonacci2 = Fibonacci1 + Fibonacci2
if Fibonacci2 % 2 == 0:
a = a + Fibonacci2
print a
raw_input()
最佳答案
循环条件错误,应该是这样的:
while True:
Fibonacci1 = Fibonacci1 + Fibonacci2
if Fibonacci1 % 2 == 0:
if a + Fibonacci1 > 4000000:
break
a = a + Fibonacci1
Fibonacci2 = Fibonacci1 + Fibonacci2
if Fibonacci2 % 2 == 0:
if a + Fibonacci2 > 4000000:
break
a = a + Fibonacci2
关于python - 400 万以下的斐波那契数列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3270863/