@FramaLama: Ich verstehe immer noch nicht was Du da nicht verstehst. Was die Rekursion macht steht doch da, Du musst nur nachvollziehen was passiert. Wenn Du Funktionsaufrufe verstanden hast, dann müsstest Du auch rekursive Aufrufe verstehen, denn da ist an sich nichts besonderes dran. Die letzte Zeile ruft eine Funktion auf und gibt deren Rückgabewert zurück. Das ist in diesem Fall die Funktion selbst die da aufgerufen wird. Die Laufzeitumgebung erkennt da nicht das es sich um einen rekursiven Aufruf handelt, sondern sieht da einfach nur einen Aufruf wie jeden anderen auch. Und das ist er wie gesagt auch. Wenn Du das nachvollziehen willst, musst Du also nur ganz normal Funktionsaufrufe verstanden haben.
Also wenn eine Funktion zu einem Aufruf kommt, werden die Argumente ausgewertet, an die aufgerufene Funktion übergeben, die macht dann was damit, gibt ein Ergebnis zurück, und dann geht es an der Stelle in der aufrufenden Funktion mit diesem Ergebnis weiter.
Vielleicht hilft das mit dem drüber nachdenken wie die Schritte aussehen, wenn man das nicht so prozedural formuliert, sondern als *einen Ausdruck*, wo man die konkreten Werte eines Beispiels leichter einsetzen kann:
Code: Alles auswählen
def is_palindrome(word):
return len(word) <= 1 or (word[0] == word[-1] and is_palindrome(word[1:-1]))