找到斐波纳契数列中偶数项的总和

yet*_*ker 6 python sum fibonacci

#!/usr/bin/python2

"""
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
"""

odd, even = 0,1
total = 0
while True:
    odd = odd + even  #Odd
    even = odd + even     #Even
    if even < 4000000:
        total += even
    else:
        break
print total
Run Code Online (Sandbox Code Playgroud)

我的算法:

  1. 如果我将前2个数字取为0,1; 我在while循环中首先找到的数字将是奇数和Fibonacci系列的第一个数字.
  2. 这样我计算偶数,每次都将even的值加到total.
  3. 如果value even大于4e6,我会从无限循环中断开.

我已经尝试了很多,但我的回答总是错误的.谷歌说答案应该是,4613732但我似乎总是得到5702886

感谢您的支持.

Rob*_*ers 20

基本上你在这里做的是添加斐波纳契数列的每一个元素,而问题只是求和偶数元素.

你应该做的只是迭代4000000以下的所有斐波纳契值并做一个if value % 2 == 0: total += value.的%是上除法运算余数,如果除以2时余数等于0,则数量是偶数.

例如:

prev, cur = 0, 1
total = 0
while True:
    prev, cur = cur, prev + cur
    if cur >= 4000000:
        break
    if cur % 2 == 0:
        total += cur
print(total)
Run Code Online (Sandbox Code Playgroud)