Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Rekursion Was ist Rekursion? Was sind rekursive Methoden?

Ähnliche Präsentationen


Präsentation zum Thema: "Rekursion Was ist Rekursion? Was sind rekursive Methoden?"—  Präsentation transkript:

1 Rekursion Was ist Rekursion? Was sind rekursive Methoden?
Worauf muss ich bei Rekursion achten? Wozu braucht man Rekursion?

2 Was ist Rekursion? Problem In der Rekursion wird
ein Problem vereinfacht, indem es solange in kleinere Teilprobleme zerlegt wird, bis diese so einfach sind, das sie für sich genommen gelöst werden können.

3 Was ist Rekursion? Teilprobleme Teilprobleme Teillösungen Teillösungen

4 Was ist Rekursion? Die einzelnen Lösungen (die sich aus der Abbruch-
bedingung ergeben) können dann zu einer Gesamtlösung kombiniert werden. Teillösung

5 Was ist Rekursion? Gesamt-Lösung Teillösungen Teillösungen

6 Was sind rekursive Methoden?
Methoden, die sich selbst aufrufen direkt indirekt

7 Was sind rekursive Methoden?
Direkt rekursive Methode Hat im Methodenrumpf einen Aufruf von sich selbst

8 Was sind rekursive Methoden?
Beispiel für direkt rekursive Methode: int methodeP(int zahl) { if (zahl == 0) return 1; return methodeP(zahl - 1)+1; }

9 Was sind rekursive Methoden?
Indirekt rekursive Methode Ruft sich selbst nicht direkt im eigenen Rumpf auf, sondern ruft eine andere Methode auf, die wiederum die ursprüngliche Methode aufruft. ! Das kann beliebig komplex (und damit unübersichtlich) geschehen.

10 Was sind rekursive Methoden?
Beispiel für indirekt rekursive Methode: int methodeQ(int zahl) { return methodeP(zahl - 2) + zahl; } int methodeP(int zahl) { if (zahl <= 0) return 1; return methodeQ(zahl - 1) + 1;

11 Worauf muss ich bei Rekursion achten?
Wie schon gesehen, ist die Abbruchbedingung sehr wichtig. Ohne sie kommt die Methode in eine Endlosschleife. int methodeP(int zahl) { if (zahl == 0) return 1; //Abbruchbedingung return methodeP(zahl - 1)+1; }

12 Worauf muss ich bei Rekursion achten?
Was passiert beim obigen Beispiel, wenn ich methodeP mit einem negativen Wert aufrufe? int methodeP(int zahl) { if (zahl == 0) return 1; //Abbruchbedingung return methodeP(zahl - 1)+1; }

13 Worauf muss ich bei Rekursion achten?
Die Abbruchbedingung fängt diesen Fall nicht ab. Die Methode kommt in eine Endlosschleife. Lösung: int methodeP(int zahl) { if (zahl <= 0) return 1; //Abbruchbedingung return methodeP(zahl - 1)+1; }

14 Wozu braucht man Rekursion?
Rekursion und Iteration sind gleich mächtig. Oft bietet sich die Aufgabenstellung direkt für eine rekursive Lösung an. Beispiel: Die Fakultätsfunktion (n!)

15 Wozu braucht man Rekursion?
Definition n!: 0! = 1 1! = 1 n! = n * (n-1)!

16 Wozu braucht man Rekursion?
Implementierung mittels Rekursion in Java: int fakN(int n) { if(n == 0) return 1; // 0! = 1 if(n == 1) return 1; // 1! = 1 return n * (fakN(n-1)); // n! = (n-1)! }

17 Wozu braucht man Rekursion?
Wie man sieht, lässt sich die mathematische Definition leicht rekursiv umsetzen. Eine entsprechende iterative Lösung hätte mehr Denkarbeit gekostet. Darum: Rekursion 


Herunterladen ppt "Rekursion Was ist Rekursion? Was sind rekursive Methoden?"

Ähnliche Präsentationen


Google-Anzeigen