项目欧拉:甚至斐波那契数字

时间:2017-12-26 20:09:08

标签: python project fibonacci solution eulers-number

Fibonacci序列中的每个新术语都是通过添加前两个术语生成的。从1和2开始,前10个术语将是:

1,2,3,5,8,13,21,34,55,89,......

通过考虑Fibonacci序列中的值不超过四百万的项,找到偶数项的总和。

我的程序打印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)

3 个答案:

答案 0 :(得分:2)

if fib(n) % 2 != 0:
    tot += fib(n)

这检查奇数值,因为偶数mod(%)2是0

此外,您还要计算fib(n)三次。可能想做点什么。

答案 1 :(得分:1)

谢谢你的回复!我忘记了甚至&#39;甚至&#39;意思是,抱歉浪费你的时间! 我还改进了我的代码,

tot = 0
a = 1
b = 1
h = 0

while h <= 4000000:
    if h % 2 == 0:
        tot += h
    a = b
    b = h
    h = a + b

print(tot)

答案 2 :(得分:-1)

    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)