Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung | |
faecher:informatik:oberstufe:algorithmen:rekursion:callstack_rekursion:start [31.01.2023 13:58] – [Zusammenfassung] Frank Schiebel | faecher:informatik:oberstufe:algorithmen:rekursion:callstack_rekursion:start [11.12.2023 14:51] (aktuell) – Marco Kuemmel |
---|
| ''fak_rekursiv(1)'' wird aus dem vorhergehenden Aufruf heraus aufgerufen.\\ Auf dem Stack wird Speicher für diesen Aufruf reserviert.\\ Die Rücksprungadresse befindet sich wiederum **im vorigen Aufruf** der rekursiven Methode selbst.\\ **Jetzt tritt der Basisfall ein!**| {{ .:fak003.drawio.png |}} | | | ''fak_rekursiv(1)'' wird aus dem vorhergehenden Aufruf heraus aufgerufen.\\ Auf dem Stack wird Speicher für diesen Aufruf reserviert.\\ Die Rücksprungadresse befindet sich wiederum **im vorigen Aufruf** der rekursiven Methode selbst.\\ **Jetzt tritt der Basisfall ein!**| {{ .:fak003.drawio.png |}} | |
|\\ || | |\\ || |
|Die ist der erste Aufruf, der vollständig abgeschlossen ist.\\ Es wird kein neuer Aufruf von ''fak_rekursiv'' auf den Call-Stack gelegt, sondern\\ der Aufruf von ''fak_rekursiv(1)'' endet damit, dass ''1'' an die\\ aufrufende Stelle zurückgegeben wird und die zum Aufruf gehörenden\\ Daten vom Stack entfernt werden. | {{ .:fak004.drawio.png |}} | | |Dies ist der erste Aufruf, der vollständig abgeschlossen ist.\\ Es wird kein neuer Aufruf von ''fak_rekursiv'' auf den Call-Stack gelegt, sondern\\ der Aufruf von ''fak_rekursiv(1)'' endet damit, dass ''1'' an die\\ aufrufende Stelle zurückgegeben wird und die zum Aufruf gehörenden\\ Daten vom Stack entfernt werden. | {{ .:fak004.drawio.png |}} | |
|\\ || | |\\ || |
|Damit hat der Aufruf von ''fak_rekursiv(2)'' alle Informationen,\\ um abgeschlossen zu werden: \\ Der Ausdruck ''n*fak_rekursiv(n-1)'' kann jetzt zu ''2*1'' ausgewertet und an die\\ aufrufende Stelle zurückgegeben werden.\\ Die zum Aufruf gehörenden\\ Daten werden vom Stack entfernt. | {{ .:fak005.drawio.png |}} | | |Damit hat der Aufruf von ''fak_rekursiv(2)'' alle Informationen,\\ um abgeschlossen zu werden: \\ Der Ausdruck ''n*fak_rekursiv(n-1)'' kann jetzt zu ''2*1'' ausgewertet und an die\\ aufrufende Stelle zurückgegeben werden.\\ Die zum Aufruf gehörenden\\ Daten werden vom Stack entfernt. | {{ .:fak005.drawio.png |}} | |