Achtung:

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

Aus Projektwiki - ein Wiki mit Schülern für Schüler.
Wechseln zu: Navigation, Suche

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;.