Al tener en cuenta los términos de la sucesión de Fibonacci cuyos valores no superan los cuatro millones, hallar la suma de los términos más valorados

okvoyce:

Buscando un poco de ayuda con este proyecto Euler pregunta: Al tener en cuenta los términos de la sucesión de Fibonacci cuyos valores no superan los cuatro millones, hallar la suma de los términos más valorados.

Estoy seguro que hay otros, de manera más sencilla de hacer esto, pero yo sólo estoy empezando a cabo! He conseguido que el código de salida de la suma de los términos incluso de la secuencia de Fibonacci, pero no tengo ni idea de cómo establecer el límite de salida a cuatro millones (que acabo de establecer el rango de 1 - 10 para la prueba). ¿Hay alguna forma de hacer esto con el código actual que he escrito, en lugar de empezar de nuevo?

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)
kederrac:

puede utilizar el incorporado en funciones sumy filter:

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)))

salida:

4613732

la fibfunción generará todos los números de Fibonacci, mientras que la filterfunción filtrará aquellos números que no son siquiera, y, finalmente, la sumfunción incorporada añadirá todos los números pares

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=372829&siteId=1
Recomendado
Clasificación