Efficace de calcul de la suite de Fibonacci

Je suis en train de travailler sur un Projet Euler problème: celui de la somme des nombres de Fibonacci.

Mon code:

def Fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return Fibonacci(n-1) + Fibonacci(n-2)

list1 = [x for x in range(39)]
list2 = [i for i in list1 if Fibonacci(i) % 2 == 0]

La solution du problème peut être facilement trouvé par l'impression de la somme(liste 2). Cependant, c'est prendre beaucoup de temps pour arriver à la liste 2, je suis dans le doute. Est-il possible de faire plus vite? Ou est-il correct, même de cette façon...

(le problème: En considérant les termes de la suite de Fibonacci dont les valeurs ne dépassent pas quatre millions de dollars, la somme de la valeur des termes.)

  • P. S. j'ai trouvé les valeurs pour lesquelles elle ne dépasse pas 4 millions de dollars en essayant.
  • Astuce: essayez de lire la page wiki...
  • Non: la page wiki pour les nombres de Fibonacci....
  • Naïf récursivité ne fonctionne que dans O(phi^n)
  • On peut calculer dans O(log n). Voir n-ième nombre de fibonacci dans sublinéaire temps.
  • Projet Euler 's Même nombres de Fibonacci est sur even-valued terms, et non pas les valeurs avec la même ordinal/pour les même arguments/au même indice. Si vous pouvez trouver l'ordinal pour le plus grand terme plus petite que la limite (four million avec "Problème 2"), vous pouvez trouver cette somme en une seule évaluation de la fonction de Fibonacci.

InformationsquelleAutor user65165 | 2013-08-11