这个问题在这里已经有了答案:




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/

10-13 09:26