Lernpfad:Rekursion in Java/Aufrufstapel: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Thi (Diskussion | Beiträge) |
Thi (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
{{Navigation}} | {{Navigation}} | ||
== Der Aufrufstapel == | == Der Aufrufstapel == | ||
Intern werden die Methodenaufrufe einer rekursiven Methode auf einem ''Stapel'' gespeichert. Die Methoden, die ganz oben auf dem Stapel liegen, werden zuerst abgearbeitet. Danach wird das Resultat der Methode verwendet, um die darunterliegenden Methoden zu berechnen. | Intern werden die Methodenaufrufe einer rekursiven Methode auf einem ''Stapel'' gespeichert. Die Methoden, die ganz oben auf dem Stapel liegen, werden zuerst abgearbeitet. Danach wird das Resultat der Methode verwendet, um die darunterliegenden Methoden zu berechnen. | ||
Der Quelltext für die Methode fakultät erzeugt den | Der Quelltext für die Methode fakultät erzeugt den darunter dargestellten Aufrufstapel. | ||
<syntaxhighlight lang="java" line="1" > | <syntaxhighlight lang="java" line="1" > | ||
public int fakultät (int n){ | public int fakultät (int n){ | ||
Zeile 14: | Zeile 14: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Datei:01_Rekursion_Aufrufstack_Fakultaet.png |600px|center|Aufrufstapel der Methode Fakultät.]] | |||
{{Aufgabe:Start}} | {{Aufgabe:Start}} |
Version vom 22. Mai 2019, 08:39 Uhr
Der Aufrufstapel
Intern werden die Methodenaufrufe einer rekursiven Methode auf einem Stapel gespeichert. Die Methoden, die ganz oben auf dem Stapel liegen, werden zuerst abgearbeitet. Danach wird das Resultat der Methode verwendet, um die darunterliegenden Methoden zu berechnen.
Der Quelltext für die Methode fakultät erzeugt den darunter dargestellten Aufrufstapel.
public int fakultät (int n){
if (n < 2){
return 1;
}else{
return n*fakultät (n-1);
}
}
Arbeitsauftrag
Die Methode z | Ergänze den Aufrufstapel für z(5) . | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
public int z(x) {
if (x > 1){
return x + z(x - 2);
}else{
return 1;
}
}
|
|
Lösung
z(1) | 1 | |||
z(3) | z(3) | 3+1=4 | ||
z(5) | z(5) | z(5) | z(5) | 5+4=9 |