Ich bin neu in der Programmierung und versuche, die Projekt Euler-Übungen zu machen, um meine Kenntnisse über Kodierung zu verbessern. Ich bin auf verschiedene Lösungen in Bezug auf Projekt Euler # 2 gestoßen.Projekt Euler # 2 Python 3.5 Hilfe zur Latenz
Allerdings möchte ich wissen, warum mein Code so viel länger dauert, um im Vergleich zu einer Lösung, die ich gefunden habe, zu berechnen.
Ich würde mich freuen, wenn jemand mich über die Unterschiede zwischen den beiden führen kann.
Mein Code:
def fib(n):
if n==0:
return 0
elif n == 1:
return 1
else:
f=fib(n-1)+fib(n-2)
return f
i=0
store=[]
while fib(i)<=4000000:
i += 1
if fib(i)%2 == 0:
store.append(fib(i))
print('The total is: '+str(sum(store)))
Online-Lösung gefunden:
a = 1
b = 2
s = 0
while b <= 4000000:
if not b % 2:
s += b
a, b = b, a + b
print(s)
Nicht mit irgendeiner Antwort verbunden, aber Sie können eine weitere Verbesserung der iterativen Lösung vornehmen, indem Sie von sogar Fibonacci zu sogar Fibonacci springen, so dass Sie die if-Anweisung loswerden können. Jede 3. Fibonacci-Zahl ist gerade, also wenden Sie die Regel dreimal nacheinander an: 'während b <4000000: s + = b; a, b = a + 2 * b, 2 * a + 3 * b '. – Reti43
Ihr Programm, wie Sie es gepostet haben, ist ungültig; Bitte korrigieren Sie Ihre Einrückung. – marcelm