Dieses Wiki, das alte(!) Projektwiki (projektwiki.zum.de)
wird demnächst gelöscht.
Bitte sichere Deine Inhalte zeitnah,
wenn Du sie weiter verwenden möchtest.
Gerne kannst Du natürlich weiterarbeiten
im neuen Projektwiki (projekte.zum.de).Rekursion: Unterschied zwischen den Versionen
(→Problemlösung) |
(→Beispiel an einer Methode) |
||
Zeile 38: | Zeile 38: | ||
int RestlaengeGeben() | int RestlaengeGeben() | ||
{ | { | ||
− | if(nachfolger == null) | + | if(nachfolger == null) //Abbruchbedingung |
{ | { | ||
− | return 1; | + | return 1; //Abbruch anweisung |
− | + | } | |
else | else | ||
{ | { | ||
− | return nachfolger.RestlaengeGeben()+1; | + | return nachfolger.RestlaengeGeben()+1; //Rekursiever Methoden Aufruf(ohne return und +1 ) |
} | } | ||
} | } | ||
Die Rekursion in der Methoden wird dargestellt durch den rekursiven Methodenaufruf ''return Nachfolger.RestlaengeGeben()+1;''. | Die Rekursion in der Methoden wird dargestellt durch den rekursiven Methodenaufruf ''return Nachfolger.RestlaengeGeben()+1;''. |
Version vom 18. März 2014, 17:31 Uhr
Bei einer Rekursion besitzt das Objekt einer Klasse eine Referenz auf sich selbst. Als rekursive Methode bezeichnet man eine Methode, welche sich selbst aufruft.
Inhaltsverzeichnis |
Rekursive Beziehungen
hier fehlt noch Text!
Rekursive Methoden
Problemlösung
Bei der Rekursion wird das vorhandene Problem in ein kleineres Problem gleicher Art vereinfacht, bis es direkt lösbar ist.
Beispiel Fakultät
Wir haben in einer Unterrichtsstunde das Beispiel Fakultät an einem Rollenspiel dargestellt. Fakultät 4! Vier Personen standen nebeneinander und stellten die schrittweise Problemlösung dar. Der ersten Person wurde die Aufgabe Fakultät 4 gestellt, was ihr jedoch zu schwer war. Deswegen fragte sie ihren Nachbarn. Auch diesem war die gestellte Aufgabe (Fakultät 3) zu schwer und so fragte auch er seinen Nachbarn. Diesem war die gestellte Aufgabe (Fakultät 2) ebenfalls zu schwer und stellte sie an den nächsten weiter. Dieser konnte seine Aufgabe (Fakultät 1) leicht lösen und gab seine Antwort an den Vordermann zurück. Der Folgende konnte nun seine Aufgabe lösen und die Lösung weitergeben. Auch der Nächste konnte die gestellte Aufgabe lösen und gab die Lösung wiederum weiter. Der erste konnte nun auch seine Aufgabe lösen und hatte das Endergebnis.
Beispiel am Quelltext
Im folgenden wird jeweils ein Beispiel eines rekursiven Objekts, sowie einer rekursiven Methode dargestellt.
Beispiel an einem Objekt
class KNOTEN { private DATENELEMENT daten; private KNOTEN nachfolger; KNOTEN(DATENELEMENT d) { daten = d; nachfolger = null; } }
Die Rekursion wird dargestellt durch private KNOTEN nachfolger;.
Beispiel an einer Methode
int RestlaengeGeben() { if(nachfolger == null) //Abbruchbedingung { return 1; //Abbruch anweisung
}
else { return nachfolger.RestlaengeGeben()+1; //Rekursiever Methoden Aufruf(ohne return und +1 ) } }
Die Rekursion in der Methoden wird dargestellt durch den rekursiven Methodenaufruf return Nachfolger.RestlaengeGeben()+1;.