1 / 17

Rekursion

Was ist Rekursion? Was sind rekursive Methoden? Worauf muss ich bei Rekursion achten? Wozu braucht man Rekursion?. Rekursion. 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

yanni
Télécharger la présentation

Rekursion

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Was ist Rekursion? Was sind rekursive Methoden? Worauf muss ich bei Rekursion achten? Wozu braucht man Rekursion? 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 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 Teillösungen Teillösungen

  6. Was sind rekursive Methoden? 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 

More Related