Zum Inhalt springen
L

Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).

Rekursion einfach erklärt - Funktionen in Java 5

Informatik - simpleclub7:07 244.305 Aufrufe veröffentlicht Auf YouTube

Das Wichtigste aus dem Video

Tipp auf eine Zeit – das Video springt genau dorthin.

Transkriptautomatisch erstellt · 69 Zeilen
Herunterladen
  1. Aha da ist sie also: Die berühmte, weltbekannte, glorreiche Rekursion. Oh man lass mich raten: “Wenn ihr die verstanden habt, dann habt
  2. ihr fast die ganze Informatik verstanden” So oder so änhlich erzählt das der Prof doch immer :D
  3. Schauen wir uns das mal in Ruhe an! Und ab geht’s!
  4. INTRO Erklärung Was ist Rekursion? Also gut Freunde!
  5. Was bedeutet jetzt Rekursion? Bei der Rekursion ruft sich eine Methode quasie wieder selbst auf.
  6. Das heißt wir haben eine Methode in unsrem Progamm, die sich immer wieder selbst aufruft, bis eine bestimmte Abbruchbedingung erfüllt ist.
  7. Es gibt die indirekte und direkte Rekursion. Indirekt bedeutet zwei Methoden rufen sich wechselseitig auf.
  8. Eine direkte Rekursion ruft die eigene Methode selbst wieder auf. Dabei wird eine Aufgabe oder ein Problem in immer kleinere Teile zerlegt und am Ende zur
  9. Lösung wieder vereint. Auch bekannt als Prinzip “Teile und Herrsche” :) #Sidefact.
  10. Aha und wie kann ich mir das jetzt Vorstellen? Stellt euch vor eure Oma geht in den Wald und will Bäume für Weihnachten fällen :D
  11. Um das zu tun führt sie die Methode Baum fällen aus. Die Methode wird jedesmal neu aufgerufen.
  12. Das heißt sie führt mit ihrer Axt immer wieder dieselbe Bewegung aus. Sozusagen ruft sie immer wieder die Methode Baum fällen auf.
  13. Und jedesmal wird der Stamm des Baums dünner, bis sie ihn endlich gefällt hat. :D Durch den rekursiven Aufruf, macht sie also immer das gleiche.
  14. Am Ende ist klar sie bekommt einen Weihnachtsbaum :D Am besten wir schauen mal die baumfällende Oma im Code an:
  15. Beispiel Rekursion baumfällende Oma Also wie gesagt: Unsre Oma geht in den Wald.
  16. Dort will sie Bäume für Weihnachten fällen. ~
  17. Das heißt wir machen ein Methode baumfällen. Dabei geben wir kein bestimmte Typ zurück, deswegen schreiben wir void.
  18. Als Parameter übergeben wir eine beliebige Zahl. Die soll einfach die Dicke des Stamms wiederspiegeln.
  19. Jetzt kommen die Anweisungen. Als erstes hackt die Oma den Baum.
  20. Also drucken wir “hacken” auf der Konsole aus. Ist der Baum bei 1, das heißt bei uns die Dicke des Baums ist bei 1, dann fällt der
  21. Baum. Ansonsten wiederhole die Funktion von Anfang.
  22. Die Zeile 12 ist dabei die eigentliche Rekursion. Hier rufen wir die Methode baumfällen erneut auf und übergeben ihr den Parameter abzüglich
  23. 1. So eine Art Abbruchbedingung ist ganz wichtig, damit die Methode irgendwann auch zum Ende
  24. kommt. Sonst würde die Oma ewig das Holz hacken.
  25. Am besten ihr merkt euch: Bei der Rekursion ruft sich die Methode irgendwo selbst auf und sorgt dafür, dass es nach endlich vielen Aufrufen beendet wird.
  26. Alright! Dann noch schnell die Main Methode dazu.
  27. Wir rufen unsre Methode dann direkt auf. Und übergeben die Zahl 5.
  28. Das heißt im Kontext der Stamm hat eine größe von 5. Wie dick das jetzt ist könnt ihr euch selbst ausdenken.
  29. Starten wir jetzt das Programm erhalten wir…. Die Oma hackt also 5 mal den Baum und hat dann schon den ersten Weihnachtsbaum.
  30. Erklärung Wdh Iteration Man erkennt leicht, dass man dieses Beispiel auch mit einer Schleife hätte lösen können.
  31. Das ist dann wieder das Konzept der Iteration. Wat war das nochmal?
  32. Bei der Iteration werden bestimmte Abschnitte eines Programms einfach nochmal wiederholt. Dabei wird aber nicht die komplette Methode erneut aufgerufen.
  33. Viele Probleme oder Aufgaben werden entweder mit der Iteration oder mit der Rekursion gelöst. Beide Prinzipien erzielen meistens die gleichen Ergebnisse, deswegen ist es auch möglich
  34. aus einer Iteration eine Rekursion und umgekehrt zu machen. Das letzte mal, haben wir uns die Fakultätsfunktion angeschaut.
  35. Iterativ sieht dat ganze dann so aus: Eben mir einer For Schleife, damit ein bestimmter Abschnitt der Methode wiederholt wird.
  36. Beispiel Rekursion Fakultät Jetzt wollen wir mal die Fakultät rekursiv programmieren.
  37. Dazu erstmal wieder eine neue Klasse. Danach gleich die Methode: Wir nennen sie einfach wieder “rechneFakultät”.
  38. Der Methode übergeben wir wieder eine Zahl, aus der dann die Fakultät berechnet wird. Jetzt schreiben wir gleich die Abbruchbedingung.
  39. Ist die eingegebene Zahl kleiner oder gleich 1, dann gib uns eine 1 zurück. Ist die Zahl größer rechnet das Programm die eingegebene Zahl mal die erneute Funktion.
  40. Dabei passiert der rekursive Aufruf. Wir schreiben a * rechneFakultaet(a-1).
  41. Das heißt unsre Methode beginnt wieder von vorne, aber verringert vorher die Zahl die wir bestimmen um eins.
  42. Schreiben wir jetzt unsre Main Methode noch dazu und testen das ganz mit der 3. Und schwups die wups erhalten wir als Ergebnis 6.
  43. Wie läuft das jetzt also ab? Im Prinzip haben folgende Bausteine im Code Parameterübergabe
  44. If Anweisung oder die Else Anweisung
  45. Wir starten die Methode mit der 3 als Eingabe. Sprich wir übergeben sie.
  46. Jetzt wird geprüft, ob 3 kleiner gleich 1 ist. Ne absolut nicht!
  47. Also springen wir in den Else Fall. Das heißt wir geben jetzt zurück: 3 mal rechneFakultaet(3-1)
  48. Jetzt beginnt der ganze Spaß wieder von vorne: Diesmal ist der Wert aber nur noch 2 statt 3.
  49. 2 ist größer als 1, also wieder ab in den Else Fall.
  50. Dort wieder 2* rechneFakultaet (2-1) Insgesamt steht jetzt also da: 3 * 2 * rechneFakultaet(1)
  51. Man sieht ganz gut, dass das Programm die Zahl in immer kleinere Teile zerlegt. Dadurch wird die Rechnung immer länger.
  52. Erneut rufen wir als die Methode auf, aber diesmal mit der 1. 1 ist kleiner gleich 1.
  53. Das heißt wir springen gleich in den If Zweig und geben einfach die 1 zurück. Insgesamt haben wir also dann dastehen: 3 * 2 * 1.
  54. Was laut Adam Riese gleich 6 ergibt. Nice!
  55. Wichtig ist also: Bei der Rekursion wird die Methode immer und immer erneut aufgerufen, bis sie irgendwann die Abbruchbedingung erreicht.
  56. Bei der Fakultät wird die erste Zahl in immer kleiner Zahlen zerlegt und am Ende wird alles zusammengerechnet.
  57. Logischerweise gibt es noch zahlreiche verschiedene Varianten, die Fakultät rekursiv zu programmieren. Aber das überlassen wir eurer Kreativität.
  58. Als Tipp: Probiert mal den Rekursiven Aufruf in den If Zweig zu packen und die Abbruchbedingung in den Else Zweig.
  59. Erklärung Vergleich Rekursion vs Iteration Iteration und Rekursion sind sich sehr ähnlich.
  60. Rekursion ist manchmal die kürzere Variante, wenn auch ein a bissal komplizierter. Wird jedoch sehr häufig verwendet und ist auch bei euren Profs sehr beliebt.
  61. #warjaklar :D Am besten ihr versucht selbst noch ein paar Rekursive Programme zu schreiben, damit das
  62. Konzept klar wird. Aber vorher verschaffen wir uns nochmal ein Überblick.
  63. Zusammenfassung Unter Rekursion versteht man das Selbstaufrufen einer Methode.
  64. Damit die Selbst Aufrufe nicht unendlich werden, benötigt man immer eine Abbruchbedingung. Bei direkte Rekursion ruft sich die Methode irgendwo von selbst wiede auf.
  65. Bei indirekter Rekursion können sich zwei Methoden wechselseitig aufrufen. Vergleichbar mit der Rekursion ist die Iteration.
  66. Dort werden bestimmte Abschnitte wiederholt. Das wird meist mit einer Schleife realisiert.
  67. Man kann sowohl Iterative Methoden in Rekursive umschreiben, als auch umgekehrt. Ja jut geil!
  68. Dat wars auch wieder Freunde. Wenn ihr noch mehr sehen wollt, dann geht auf unsre Lernplattform.
  69. Bis dahin haut rein und bis gleich.

Zum Nachlesen