Java REKURSION verstehen in 5 min - Java Programmieren Lernen Deutsch - 45 Jonas Keil https://www.youtube.com/watch?v=KwB0gjnYvoY Transkript (automatisch erstellt) 0:00 Rekursion ist ein Thema mit dem sich besonders viele Programmieranfänger sehr schwer tun deshalb zeige ich dir in diesem Video alles was du zu Rekursion 0:06 in Java wissen musst in der Theorie klingt das Ganze noch ziemlich einfach Rekursion bedeutet einfach nur dass wir eine Methode haben und diese Methode 0:14 ruft sich dann selber auf das kann ich dir am besten zeigen indem wir das einmal an ein Beispiel durchgehen dafür erstellen wir uns hier eine Methode 0:20 public static Void Hello World falls du eine aurischung zu Methoden in Java brauchst stell sicher dass du das Video hier in der Infobox gesehen hast dieser 0:30 Methode Hello World wollen wir jetzt eine Bildschirmausgabe machen also system out printline Hello World und nach dieser Ausgabe soll sich die 0:37 Methode jetzt selbst aufrufen und dafür schreiben wir hier Hello World und dass diese Methode Hello World sich jetzt im Code selbst aufruft das ist genau der 0:45 Sinn hinter Rekursion das siehst Du auch an diesem wiederholungssymbol dass dir hier in IntelliJ angezeigt wird hier lautet die Bezeichnung nämlich recursive 0:52 call also rekursiver Aufruf lass uns das Programm jetzt einmal starten dann siehst Du passiert hier noch nichts weil unser Programm immer nur den Code 1:01 ausführt der in der Main Methode steht das heißt was wir jetzt noch machen müssen ist hier in unserer Main Methode die Hello World Methode aufzurufen und 1:08 wenn wir das ganze jetzt starten dann bekommen wir hier sehr oft die Ausgabe Hello World bis das Programm irgendwann abgebrochen ist und zwar mit einer 1:15 Exception genauer gesagt mit einem stack overflow error dieser stack overflow error der ist jetzt aufgetreten weil wir hier in unserem Programm eine 1:22 Endlosschleife programmiert haben das heißt die Ausgabe Hello World die wurde einfach immer wieder auf dem Bildschirm ausgegeben bis es dem Programm 1:29 irgendwann zu viel wurde und es hier zu diesem stack overflow errow gekommen ist du kannst also sicher denken dass wir hier in unserer Methode etwas ganz 1:35 Entscheidendes vergessen haben nämlich eine Bedingung die dafür sorgt dass unser Programm irgendwann wieder abgebrochen wird ich zeig dir mal wieso 1:42 eine Bedingung meistens bei rekursiven Methoden implementiert wird dafür erstellen wir uns als erstes hier in unserer Methode einen Parameter der 1:49 jetzt bestimmt wie oft wir diese Methode hier rekursiv durchlaufen wollen angenommen wir wollen die Methode Zeh mal aufrufen also hier Zeh mal Hello 1:56 World auf dem Bildschirm ausgeben dann übergeben wir hier bei unserer Methoden aufru einfach den Wert 10 und mit jedem Durchlauf durch unser Programm wollen 2:03 wir diesen Wert um eins verringern und alles was wir jetzt noch machen müssen ist eine Bedingung zu formulieren die das Programm auch abbricht wenn unser 2:10 Counter bei ull steht dafür können wir hier schreiben if Counter = 0 dann wollen wir ausgeben SIS out fertig und ansonsten wenn der Counter 2:22 noch größer als Null ist wir das Programm also noch nicht beenden wollen dann wollen wir hier den Code ausführen den wir am Anfang geschrieben haben so 2:28 und wenn wir das Programm jetzt Start dann siehst Du wird hier exakt zehn Mal Hello World auf dem Bildschirm ausgegeben bis am Ende die Ausgabe 2:34 fertig kommt gut jetzt hast du gelernt wie Rekursion in der Theorie funktioniert und jetzt will ich dir einmal etwas zeigen dass du mit 2:41 Rekursion in Java echt schön lösen kannst dafür löschen wir das ganze hier einmal und das Beispiel dass ich dir jetzt zeigen will heißt Fakultät du 2:49 erinnerst dich wahrscheinlich noch aus Mathe das war dieses Ausrufezeichen dass du hinter deine Zahl geschrieben hast und F Fakultät hat in dem Sinne nur 2:56 bedeutet dass du 5 x 4 x 3 x 2 x 1 gerch hast und vielleicht siehst Du ja schon warum wir dieses Problem jetzt echt schön mit Rekursion lösen können als 3:05 erstes schreiben wir uns dafür eine Methode public static int unsere Methode wird diesmal nämlich ein Integer zurückgeben wirst du gleich sehen was 3:13 das macht nenn die jetzt einfach Fakultät und übergeben der Methode noch eine Zahl von der wir die Fakultät berechnen wollen okay nehmen wir mal an 3:20 wir wollen hier von unserer Main Methode aus die Methode Fakultät 5 aufrufen dann heißt das dass wir jetzt rechnen wollen 5 x 4* 3 x 2 x 1 und der Grund weshalb 3:30 wir das jetzt rekursiv umsetzen können ist der dass fün Fakultät nichts anderes ist als 5 x 4 Fakultät vier Fakultät ist aber wiederum nichts anderes als 4 x 3 3:42 Fakultät 3 Fakultät ist wiederum 3 x 2 Fakultät und immer so weiter du siehst was wir hier in unserer Methode als Ergebnis zurückgeben können ist einfach 3:50 die Zahl die unserer Fakultät hier übergeben wird mal der Fakultät von dieser Zahl aber um eins verringert auf unser Beispiel angewendet heißt das wir 3:59 Ruf hier Fakultät von der Zahl 5 auf und zurückgegeben bekommen wir dann 5 mal der Fakultät von 5- 1 also 4 diese Methode ruft sich also wieder selbst auf 4:10 diesmal aber mit der Zahl 4 und gibt dann wiederum zurück 4 mal der Fakultät von 4-1 also in dem Fall 3 und du siehst damit wir hier nicht den gleichen Fehler 4:19 wie am Anfang machen müssen wir hier noch eine Abbruchbedingung schreiben und zwar wollen wir mit dem Rechnen ja aufhören wenn wir hier bei der Zahl 1 4:25 angekommen sind also ifzahl = 1 und dann stoppen wir die Rekursion indem wir hier nicht mehr Fakultät aufrufen sondern jetzt einfach eins zurückgeben und 4:34 solange unsere Zahl hier noch größer als ein ist wollen wir hier ganz normal weiterrechnen das Ergebnis von unserer Berechnung wollen wir jetzt noch 4:41 ausgeben und wenn wir das Programm jetzt starten dann siehst Du es unser Ergebnis 120 wenn du Lust hast kannst du diese Zahl ja aus Spaß einmal durch einen 4:49 Scanner einlesen lassen und dann schauen bis zu welcher Fakultät dein PC das ganze berechnen kann wenn dich Videos zu Konzepten wie der Rekursion 4:56 interessieren solltest du auf jeden Fall auch dieses Video hier ausgecheckt haben da erkläre ich dir was es mit Polymorphie in Java auf sich hat wenn 5:03 dir dieses Video geholfen hat Rekursion zu verstehen dann lass mir einen Daumen nach oben da und schreib mir dein Feedback in die Kommentare falls dich 5:09 das Thema Rekursion interessiert und du noch mehr dazu lernen möchtest schau auf jeden Fall mal in den Link unten in der Videobeschreibung wir bei sehen uns im 5:16 nächsten Video macht's gut und bis dahin ciao