Lernpfad:Rekursion in Java/Aufrufstapel: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:
== 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'' (''Stack'') 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.
Der Quelltext für die Methode <code>fakultaet</code> erzeugt den darunter dargestellten Aufrufstapel.
<syntaxhighlight lang="java" line="1" >
<syntaxhighlight lang="java" line="1">
public int fakultät (int n){
public int fakultaet(int n) {
  if (n < 2){
if(n < 2) {
    return 1;
return 1;
  }else{
} else {
    return n*fakultät (n-1);
return n*fakultaet(n-1);
  }
}
}
}
</syntaxhighlight>
</syntaxhighlight>
[[Datei:01_Rekursion_Aufrufstack_Fakultaet.png |600px|center|Aufrufstapel der Methode Fakultät.]]
[[Datei:01_Rekursion_Aufrufstack_Fakultaet.png|600px|center|Aufrufstapel der Methode <code>fakultaet</code>.]]


{{Aufgabe:Start}}
{{Aufgabe:Start}}
Zeile 23: Zeile 23:
| <syntaxhighlight lang="java" line="1" >
| <syntaxhighlight lang="java" line="1" >
public int z(x) {
public int z(x) {
  if (x > 1){
    if(x > 1) {
    return x + z(x - 2);
        return x + z(x - 2);
  }else{
    } else {
    return 1;
        return 1;
  }
    }
}
}
</syntaxhighlight>
</syntaxhighlight>
8.581

Bearbeitungen