REKURSION: Ganz EINFACH erklärt für Anfänger Kevin Chromik https://www.youtube.com/watch?v=x7dEhDBPwX4 Transkript (automatisch erstellt) 0:00 hey leute revision ist eines der themen der programmierung die einem vor allem im studium oder am anfang vom studium kopfschmerzen bereiten kann 0:07 in diesem video werde ich dir zeigen was regression ist um wie du es in der programmierung verwendet viel spaß [Musik] 0:19 falls du mich noch nicht kennt mein name ist kevin ich bin software entwickler arbeitet im eckbereich und auf meinem kanal geht es um programmierung karriere 0:27 im informatikbereich ohne um das studium und ab und zu mal gibt es auch einen kleinen block wenn ich das interessiert dann das gerne ein abo da unvergesslich 0:34 die glocke zu aktivieren außerdem können die mir auf instagram folgen dort post ich regelmäßig behind the scenes also schaut dort gerne mal 0:40 vorbei aber jetzt mal dazu bist du überhaupt doch dieses video geklickt hast was ist reg version wenn man wikipedia fragt da lernt man das einen 0:48 abstrakten vorgang beschreibt das regeln auf einem produkt das sie selbst erzeugt haben von neuem angefangen werden super einfach oder so muss man überhaupt 0:57 noch dieses video dazu anschauen weil die meisten mich natürlich eingeschlossen keine ahnung hat was das bedeutet deshalb werden wir das ganze 1:04 anhand eines praktischen beispiels durchgehend in der programmierung beschreibt das ganze übel den vorgang wenn eine funktion sich selbst aufruft 1:11 stadt eine aufgabe mit hilfe von einer schleife zu lösen bei beiden ansätzen ist es aber ganz wichtig eine abbruch bedingung zu haben 1:18 weil man sonst in einer endlosschleife landet das thema ist für informatiker sogar so spannend dass sie sogar auf google ein kleines easter ergibt wenn 1:24 man nach dem begriff recherchen sucht ein klassisches beispiel um die rezession zu verstehen ist die berechnung der fakultät hier gibt es 1:31 einen staat wehrt nehmen wir mal die zahl keine ahnung 3 und diese werden mit allen ganzen positiven zahlen multipliziert die kleiner als sie selbst 1:38 sind natürlich nur bis einschließlich der zahl 2 aus dem einfachen grund weil die multiplikation mit der zahl 1 den werde überhaupt nicht verändert aber 1:45 genug von der theorie schauen wir uns das ganze mal anhand eines richtigen code beispiels an wir können hier natürlich jeder erdenkliche 1:51 programmiersprache verwenden ich benutze ist ja einfach mal swift weil ich nix kurzen playground darstellen kann der hat eine live ausgabe aber ich bin mir 1:59 sicher dass es in python oder java sehr sehr ähnlich aussieht damit wir den unterschied ein bisschen besser verstehen würde ich sagen wir schreiben 2:06 wir auch immer zwei funktionen und zwar einmal lösen wir das problem interaktiv als du mit deiner hilfe einer schleife dann noch einmal mit einer rezession 2:14 dazu schreiben wir erstmal eine neue funktion die nehmen wir einfach mal fakultät interaktiv und die braucht einen eingabe wert dass diese eingabe 2:28 dass ein internet als eine ganze zahl und die gibt einen integer zurück und erstmal hier eine neue variable nehmen wir eingabe wird übergeben hier die 2:45 eingabe das liegt einfach darin weil uns hilft so eine eingabe oder eine übergabe argument im eine konstante ist also das kann nicht verändert werden und wir 2:54 wollen diesen wert aber verändern deswegen speichern wir das jetzt waren alle zwischen variabler rein das ist einfach nur das hilft syntax auf in java 3:02 oder in python oder so weiter kann das alles ein bisschen anders aussehen aber im prinzip ist das alles das gleiche dann brauchen wir noch eine zweite 3:10 variable nennen wir mal ergebnis der den startwert 1 und wir brauchen unsere schleife das heißt wir machen eine wahl schleife und sagen während der eingabe 3:22 wert größer der eingabe wert während der eingabe wert größer als eins ist machen wir folgendes wir nehmen das ergebnis und multiplizieren es mit dem eingabe 3:38 wert und danach den gemeinen nicht sagen der eingabe wert muss um 1 verringert werde 3:50 und danach geben wir das ergebnis einfach zurück also unser eingabe wert könnte hier beispielsweise drei sein und wir gehen also los und sagen eingabe 4:03 wert ist größer als 1 dann gehen wir hin sagen 3 x 1 das ergebnis ist dann drei und wir reduzieren die nummer 1 das heißt wir gehen dann weiter und 4:12 multiplizieren das ganze durch zwei und solange das dann noch größer als ein zimmer weiter und geben dann den wert zurück 4:19 wir rufen die funktion das mal auf sagen das ist unser ergebnis ist die fakultät interaktiv und übergeben mal den wert 3 seine freundin schon ausgerechnet das 4:31 müsste dann die sechs sein wir lassen es ganz immer laufen und wir sehen hier auch schon der wert 6 wird ausgegeben also das funktioniert schon 4:40 alles dann ist man doch ein anderes beispiel mit seinen 313 das habe ich jetzt leider nicht im kopf du bist jetzt einfach mal drauf vertrauen dass das 4:48 ganze funktioniert und die fakultät von dreizehnter ist schon etwas höhere zahl wir kommentieren das ganze jetzt mal aus oder schieben es nach unten und 5:03 schreiben jetzt dazu die ganze aufgabe noch main region dazu schreiben wir wieder eine neue funktion die nennen wir mal fakultät repressiv und die hat auch 5:16 wieder einen eingabe wert auch wieder vom typ indischer und gibt einen insider zurück 5:26 jetzt benutzen wir keine schleife sondern wir müssen praktisch die schleife imitieren indem wir uns selbst aufrufen dazu müssen wir als erstes 5:34 unsere abbruch bedingung einbauen und zwar brauchen wir da ein statement und sagen wir wenn die eingabe größer als eins ist also praktisch genau das 5:44 gleiche was wir hier gemacht haben dann rufe dich selbst noch einmal auf als wir nehmen die eingabe und multiplizieren sie mit dem ergebnis aus der eigenen 5:59 aufruf aktion damit es gab das aber nicht endlos weiter geht müssen wir die eingabe nehmen die wir oben bekommen haben und ziehen eins davon ab 6:13 falls das hier nicht mehr zutrifft dass man als block reingehen und zwar geben wir hier einfach die eingabe wieder zurück dann rufen wir die funktion auf 6:24 und übergeben jetzt mal den gleichen wert hier mit 13 und wenn alles funktioniert dann sollte das gleiche ergebnis rauskommen 6:36 ja das sieht schon sehr gleich aus hat wohl funktioniert den grund wieso man den integrativen ansatz viel einfacher versteht ist weil man hier auf einer 6:45 dimension unterwegs ist das heißt man geht einfach eine eindimensionale schleife oder an einer dimensionale liste einfach nach und nach durch und 6:53 addiert immer die oder multiplizierte wert immer zusammen zum vergleich mit dem rekurs even ansatz geht man immer eine ebene tiefer rein damit man diese 7:01 verschachtelung jetzt ein bisschen besser verstehen bei der diskussion gehen wir wieder mit dem wert 3 einfach damit wir nicht zu viele schritte haben 7:06 und wir wissen ja das muss 6 ergeben und im prinzip wie der funktions aufruf hier funktioniert ist folgendermaßen wir haben am anfang den startwert drei den 7:18 multiplizieren wir und es heißt ich rede jetzt nur von dieser zeile 54 und diesen multipliziere ich mit 3 -1 und innen drin in dieser funktion in diesem 7:32 funktions aufruf mache ich wieder genau das gleiche das heißt ich multipliziere das ergebnis also ich muss natürlich hier das in 7:41 klammern machen wenn wir das richtig machen wegen punkt vor strich und hier mache ich 21 und hier ist andy abbruch bedingung 7:52 schon erfüllt denn die neue eingabe wäre nicht größer als 1 heißt wir geben das hier sofort wieder zurück das heißt es gibt keinen neuen funktionen aufrufen 8:02 und wenn wir das ganze jetzt wieder auf stücke dann haben wir hier natürlich die drei mal 8:10 und die haben wir die 2 und hier haben wir mal 1 und das ganze gibt natürlich 6 und diese verschachtelung ist das problem was die meisten leute haben wenn 8:22 es um das verständnis der region geht wir gesehen haben dass die regeln gar nicht so kompliziert die fakultät gehört mit sicherheit zu den einfacheren 8:30 beispiel in der praxis wird dieser ansatz aber vor allem bei such algorithmen verwendet man bekommt also ein startwert übergibt in einer funktion 8:38 dann wird sich dem element irgendwie angenähert je nachdem wie der algorithmus funktioniert und hat dann neuen ausgangspunkt den übergibt meine 8:46 mieter der funktion und das ganze macht man dann so lange bis man halt das element gefunden hat nachdem man sucht eine sache wo ich persönlich bei meiner 8:53 alltäglichen arbeit der revision benutzer bist du so genannte polling das bedeutet dass man in regelmäßigen abständen beispielsweise irgendwo anruft 9:00 und auf eine bestimmte information wartet wenn ich diese information nicht bekommen habe dann rufe ich zu einem späteren festgelegten zeitraum einfach 9:07 noch einmal an so lange bis ich einen abbruch bedingungen erfüllt habe das etwa wenn ich die information bekommen haben die ich auch haben wollte oder ein 9:14 vordefinierter maximaler zeitraum überschritten wird aber ja ich hoffe ihr habt das thema der reduzieren ein bisschen besser 9:20 verstanden falls ja dann geht dem video auf jeden fall die daumen nach oben nutzt die kommentarfunktion wenn es noch andere 9:26 themen geht bei denen vielleicht noch ein bisschen probleme hast oder schreibe einfach nur ein schönes halonen rein würde ich mich auf jeden fall freuen ich 9:32 lese mir mal alles durch und wenn du schon da unten unter dem video unterwegs bist dann das auch gerne ein abo da ich hoffe wir sehen uns dann beim nächsten 9:38 mal euer kevin [Musik]