Python-Fibonacci Code?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Als Beispiel ist auf python.org sogar eine kleine script gleich als Beispiel da

Hi,

Eine Lösung die DU nicht verstehst ist die schlechteste. Denn du weisst nicht was dein Code tut, also kannst du ihn auch nicht maintainen.

Dein Code funktioniert, also ist es sicherlich eine Lösung. Wenn es jetzt um Laufzeit geht, dann ist dein Code genauso gut, wie wenn du das Problem rekrusiv löst.

Was heisst nun rekursiv? Rekursiv bedeutet, dass deine Funktion sich selbst wieder aufruft, dann wieder, wieder, etc. das kann bis ins unendliche gehen, oder irgendwann abbrechen und die jeweiligen Resultate als Return Wert zurück geben.

So als Beispiel mit Pseudo Code:

fibonacci(a, b)
  c = a + b
  fibonacci(b, c)

fibonacci (1, 1)

Der Code ist recht ähnlich zu deinem.

Du beginnst mit c = 1 + 1 = 2

und gibst dann 2, 1 wieder an die Funktion

Dann ist c = 2 + 1 = 3, das wiederrum in die Funktion übergeben ergibt (2, 3) etc.

Woher ich das weiß:Studium / Ausbildung – Bachelor-Student in Informatik

Abgesehen davon, dass bei deiner Ausgabe die ersten beiden Zahlen der Sequenz (0, 1) fehlen, ist die Lösung gut, denn sie ist einfach und erfüllt ihren Zweck.

wo die das rekursiv gelöst haben (weiß nicht mal was das ist)

Bei einer rekursiven Lösung ruft eine Funktion sich selbst erneut auf, um eine Operation mehrmals durchzuführen.

Ein sehr einfaches Beispiel:

def print_numbers(current, max):
  if max >= current:
    print(current)
    print_numbers(current + 1, max)

print_numbers(1, 10)

Hierbei werden die Zahlen 1 bis 10 (beide Grenzen inklusiv) ausgegeben.

Es gibt manche Fälle, wo es leichter ist, eine rekursive Lösung zu formulieren, als eine iterative. Das ist vor allem dann der Fall, wenn man ein Problem mittels einer Zerlegeoperation lösen möchte (konkretes Beispiel: Ausgabe aller Werte einer beliebig tiefen Baumstruktur).