Somme de la même nombres de fibonacci en dessous de 4 millions d' - Python

Je suis d'essayer le deuxième Projet Euler question en python et que vous voulez comprendre pourquoi mon code ne fonctionne pas.

Ce code est la somme de la même nombres de Fibonacci en dessous de 4 millions de

counter = 2
total = 0
while counter <= 4000000:
    if counter % 2 == 0:
        total+= counter    
    counter+= (counter -1)
print total

Ce code de sortie: 2

Si j'ai l'impression que le compteur c'sorties: 4194305

Je suis en supposant que c'est un problème avec le si de l'instruction en cours d'exécution comme le temps boucle fonctionne correctement et que le compteur est également l'incrémentation correctement.

  • La réponse courte est que votre affirmation "Ce code est la somme de la même nombres de Fibonacci en dessous de 4 millions de dollars" est faux. Votre code ne semblent même pas essayer de le faire. Savez-vous ce qu'est un nombre de Fibonacci est, et la façon de calculer la série?
  • Imprimer counter dans la boucle et vous verrez que vous n'obtenez pas de nombres de fibonacci. La série que vous obtenez est 3,5,9,17,33,65,... et ils sont tous impairs, ce qui signifie 2 est le seul numéro est ajouté au total.
  • si vous utilisez un logiciel de débogage (essayez de PyCharm par exemple), vous pouvez arrêter une fonction comme celle-ci à l'intérieur de sa compilation et de vérification pour les valeurs intermédiaires. ensuite, vous avez facilement vu ce qui est mal.
InformationsquelleAutor nonsequiter | 2014-04-19