Überprüfen Sie den folgenden Code ein:Rekursion in der Tiefe (Python)
>>> def fib(x):
... if x == 0 or x == 1:
... return 1
... else:
... return fib(x-1) + fib(x-2)
>>> print(fib(4))
Nach den Ausführungen im SoloLearn Python Tutorial (für Rekursion), funktioniert der Code wie folgt aus:
1. fib(4) = fib(3) + fib(2)
2. = (fib(2) + fib(1)) + (fib(1) + fib(0))
3. = fib(1) + fib(0) + fib(1) + fib(1) + fib(0)
4. = 1+ 1 + 1 + 1 + 1
5. = 5
Nach Linie 2, nur fib(2)
sollte der sonst Teil der fib()
Funktion gehen, richtig? Die beiden fib(1)
und die einzelnen fib(0)
erfüllen die Kriterien der if Teil der fib()
Funktion. Also wird 1 zurückgegeben. Meine Frage ist, warum in der 3. Zeile fib(1) + fib(0) + fib(1) + fib(1) + fib(0)
alle durch 1 ersetzt und dann hinzugefügt werden?
Verzeih mir, dass ich eine solche Frage gestellt habe.
Da alle diese Anrufe an die erste Klausel lösen. –