Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Rekursion Was ist Rekursion? Was sind rekursive Methoden? Worauf muss ich bei Rekursion achten? Wozu braucht man Rekursion?"—  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? 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. Problem

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

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

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

6 Was sind rekursive Methoden? Rekursive Methoden Methoden, die sich selbst aufrufen direktindirekt

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 Darum: Rekursion


Herunterladen ppt "Rekursion Was ist Rekursion? Was sind rekursive Methoden? Worauf muss ich bei Rekursion achten? Wozu braucht man Rekursion?"

Ähnliche Präsentationen


Google-Anzeigen