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

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


{{Aufgabe:Start}}
{{Aufgabe:Start}}
{| class="wikitable"
{| {{prettytable}}
! Die Methode z               
! Die Methode z               
! Ergänze den Aufrufstapel für z(5) .
! Ergänze den Aufrufstapel für z(5) .
Zeile 22: 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>
|  
|  
{|class="wikitable"
{| class="wikitable"
   |  
   |  
   |
   |
   |z(1)
   |z(1)
   |1
   |
   |  
   |  
   |-
   |-
Zeile 44: Zeile 45:
   |-
   |-
   | z(5)
   | z(5)
   | z(5)
   |  
   | z(5)
   |  
   | z(5)
   | z(5)
   | 5+4=9
   | 5+4=9
8.581

Bearbeitungen