通过考虑斐波那契数列中的值不超过四百万的项,找到偶值项之和

问题描述 投票:3回答:3

为该项目的Euler问题寻求帮助:通过考虑斐波那契数列中值不超过400万的项,找到偶值项之和。

我确信还有其他更简单的方法可以做到这一点,但我才刚刚开始!我设法获得了输出斐波那契数列的偶数项之和的代码,但是我不知道如何将输出限制设置为400万(我只是将范围设置为1到10进行测试)。无论如何,要使用我编写的当前代码来执行此操作,而不是重新开始吗?

def fibonacci(n): 
    if n==0:
        return 0
    elif n==1 or n==2:
        return 1
    elif n>2:
        return (fibonacci(n-1)+fibonacci(n-2))


fib_list=[fibonacci(n) for n in range (1, 10) if fibonacci(n)%2==0]
fib_even=sum(fib_list)
print(fib_list)
print(fib_even)
python fibonacci
3个回答
1
投票

您可以使用内置功能sumfilter

def fib(limit):
    a, b = 0, 1
    while a < limit:
        yield a
        a, b = b, a + b

sum(filter(lambda x: x%2==0, fib(4_000_000)))

输出:

4613732

fib函数将生成所有斐波那契数,而filter函数将过滤出那些不为偶数的数字,最后,sum内置函数将添加所有偶数]]


1
投票

这是我的解决方法:


0
投票

“ while”循环可能比列表理解更适合此问题。使用带条件“ break”语句的“ while True”循环甚至可能是最简单的。

© www.soinside.com 2019 - 2024. All rights reserved.