Danke für die veranschaulichen ab 5:30 und vor allem 6:30. Erst mit dieser bildlichen Darstellung verstehe ich endlich Rekursion. Vorher wusste ich zwar wie ich es programmieren kann aber ich verstand nicht wieso am ende eine Zahl dabei raus kommt.
Ich finds immer sehr einfach zu verstehen, wenn man bspw. rekursiv einen Ordner löschen möchte, man aber nur Dateien löschen kann und daher den Ordnerinhalt scannen und bei jeder Datei die Datei löschen muss aber bei jedem Unterordner die Funktion logischerweise erneut aufrufen muss.
Hi Florian, was hältst du von Studiengängen, die speziell auf IT Security ausgelegt sind? Lohnt es sich aus deiner Sicht drei Jahre zu studieren oder würdest du einen anderen Weg gehen, um Wissen in dem Bereich aufzubauen?
Das kommt auf den konkreten Studiengang an. Den Master in IT Sicherheit an der Hochschule München kann ich bspw. absolut nicht empfehlen. Da ist jede IT Security Zertifizierung besser. Wenn es um einen Bachelor geht: Es kommt auf die konkreten Inhalte an. Wichtig ist in meinen Augen, dass Grundlagen wie Betriebssysteme, Rechnerarchitektur, Netzwerktechnik und Mathematik enthalten sind. Danach gerne Spezialisierungsmodule in z. B. Kryptographie, Datenschutz, Forensik etc.
Tja, in den Mathebüchern hätten wir für die Reelen Zahlenn jetzt wahrscheinlich nen Integral von Euler da stehen. Btw. In dem Fall war Euler tatsächlich nicht der Erste der eine Funktion für die Fakultät in den Reelen Zahlen beschrieben hat. Es war ein Kolege von ihm mit dem Er im Wettschreit war. Dieser hatte Sie eine Woche früher Beschrieben. (Ohne Integral). Naja, zumindest wenn ich mich recht Errinner.
Das Prinzip hab ich verstanden. Aber mir fehlt es an der Vorstellungskraft, wofür man dies in der Programmierung benötigt. Hast du da vielleicht ein konkretes Beispiel?
Stell dir vor du hast eine Methode in der du ein Request abschicken kannst. Nun kannst du in dieser Methode eine IF Anweisung einbauen die im Fehlerfall die die aktuelle Methode erneut aufruft (Selbstaufruf) um den Request wieder zu versuchen. Das ist nur ein Beispiel wie man Rekursionen verwenden kann.
Ich hab das früher ganz gern genutzt, um Labyrinthe zu druchqueren, vor allem, wenn in einem Problem nur die nächste Umgebung zu sehen ist und nicht das ganze Feld auf ein mal. Rekursion funktioniert dann folgender maßen, gehe nach Norden und rufe die Funktion wieder auf, gehe danach zurück, also Süden. Das mache für alle Himmelsrichtungen. Der Basisfall ist dann das testen ob man am Ausgang steht. Durch die Rekursion wird jedes Feld mindestens einmal besucht, und das zurücklaufen nach dem rekursiven Aufruf der Funktion sorgt für ein Backtracking. Welche Informationen man dann noch speichert ist einem selbst überlassen. zB den schnellsten Weg, oder vielleicht doch ein vollständiger Abbruch, sobald der Ausgang erreicht ist? Wirklich effizient ist das ganze natürlich nicht, gerade wenn das gesamte Feld vorliegt, gibt es deutlich bessere Algorithmen, aber zur Anschauung von Rekursion fand ich das immer ein mittel komplexes Problem, was viele Möglichkeiten der Rekursion vereint.
Das einfache Problem, was man selber behandelt ist, besuche von deinem eigenen Feld alle angrenzenden Felder, nur nicht das, von dem du gerade gekommen bist. Nur mit diesem Satz wird rekursiv jedes mögliche Feld besucht in allen kombinatorischen Möglichkeiten. Das ist das schöne an der Rekursion, sehr komplexes Problem kann in 10 Zeilen Code zerlegt werden.
Rekursion war im Studium ein interessantes Theme, doch in der Praxis vermeide ich es. Rekursion ist meist schnell geschrieben aber dafür ineffizient wenn es um Prozessorzeit geht.
Wenn du Rekursion verstehen willst, lese den Satz nochmal.
Definition Rekursion: Siehe Rekursion.
Ist es nicht eher:
Definition Loop: siehe Loop.
Definition Rekursion: Loop mit hoffentlich einem Ausgang.
Geht auch ;)
@@LukasLindner bei dir ist es in C++, bei Florian war es in Python.
Danke für die veranschaulichen ab 5:30 und vor allem 6:30. Erst mit dieser bildlichen Darstellung verstehe ich endlich Rekursion. Vorher wusste ich zwar wie ich es programmieren kann aber ich verstand nicht wieso am ende eine Zahl dabei raus kommt.
Das freut mich :) Genau dafür war dieses Video gedacht ;)
Danke bester Vorbereitung :)
Wirklich gut erklärt. 💪🤓
Ich finds immer sehr einfach zu verstehen, wenn man bspw. rekursiv einen Ordner löschen möchte, man aber nur Dateien löschen kann und daher den Ordnerinhalt scannen und bei jeder Datei die Datei löschen muss aber bei jedem Unterordner die Funktion logischerweise erneut aufrufen muss.
Das ist auch ein gutes Beispiel
Danke !!!
Gerne 😊
Hi Florian,
was hältst du von Studiengängen, die speziell auf IT Security ausgelegt sind? Lohnt es sich aus deiner Sicht drei Jahre zu studieren oder würdest du einen anderen Weg gehen, um Wissen in dem Bereich aufzubauen?
Das kommt auf den konkreten Studiengang an. Den Master in IT Sicherheit an der Hochschule München kann ich bspw. absolut nicht empfehlen. Da ist jede IT Security Zertifizierung besser. Wenn es um einen Bachelor geht: Es kommt auf die konkreten Inhalte an. Wichtig ist in meinen Augen, dass Grundlagen wie Betriebssysteme, Rechnerarchitektur, Netzwerktechnik und Mathematik enthalten sind. Danach gerne Spezialisierungsmodule in z. B. Kryptographie, Datenschutz, Forensik etc.
Ich habe mir Rekursion mit dem "Tower of Hanoi" selbst beigebracht
Das ist auch eine gute Möglichkeit.
Wenn man deine rekursive Funktion mit fakultät(0) aufruft, landet man dann in einer Endlosschleife?
Nein
Dein Beispiel mit den Funktionsaufrufen ist doch genau die selbe Herangehensweise wie solche Funktionen im Stack abgearbeitet werden oder ?
Genau :)
Für n nur Elemente aus den natürlichen Zahlen wählen, sonst...
... wird's schwierig.
Tja, in den Mathebüchern hätten wir für die Reelen Zahlenn jetzt wahrscheinlich nen Integral von Euler da stehen.
Btw. In dem Fall war Euler tatsächlich nicht der Erste der eine Funktion für die Fakultät in den Reelen Zahlen beschrieben hat. Es war ein Kolege von ihm mit dem Er im Wettschreit war. Dieser hatte Sie eine Woche früher Beschrieben. (Ohne Integral).
Naja, zumindest wenn ich mich recht Errinner.
Das Prinzip hab ich verstanden. Aber mir fehlt es an der Vorstellungskraft, wofür man dies in der Programmierung benötigt. Hast du da vielleicht ein konkretes Beispiel?
Stell dir vor du hast eine Methode in der du ein Request abschicken kannst. Nun kannst du in dieser Methode eine IF Anweisung einbauen die im Fehlerfall die die aktuelle Methode erneut aufruft (Selbstaufruf) um den Request wieder zu versuchen.
Das ist nur ein Beispiel wie man Rekursionen verwenden kann.
Ich hab das früher ganz gern genutzt, um Labyrinthe zu druchqueren, vor allem, wenn in einem Problem nur die nächste Umgebung zu sehen ist und nicht das ganze Feld auf ein mal.
Rekursion funktioniert dann folgender maßen, gehe nach Norden und rufe die Funktion wieder auf, gehe danach zurück, also Süden. Das mache für alle Himmelsrichtungen. Der Basisfall ist dann das testen ob man am Ausgang steht. Durch die Rekursion wird jedes Feld mindestens einmal besucht, und das zurücklaufen nach dem rekursiven Aufruf der Funktion sorgt für ein Backtracking. Welche Informationen man dann noch speichert ist einem selbst überlassen. zB den schnellsten Weg, oder vielleicht doch ein vollständiger Abbruch, sobald der Ausgang erreicht ist? Wirklich effizient ist das ganze natürlich nicht, gerade wenn das gesamte Feld vorliegt, gibt es deutlich bessere Algorithmen, aber zur Anschauung von Rekursion fand ich das immer ein mittel komplexes Problem, was viele Möglichkeiten der Rekursion vereint.
Das einfache Problem, was man selber behandelt ist, besuche von deinem eigenen Feld alle angrenzenden Felder, nur nicht das, von dem du gerade gekommen bist. Nur mit diesem Satz wird rekursiv jedes mögliche Feld besucht in allen kombinatorischen Möglichkeiten. Das ist das schöne an der Rekursion, sehr komplexes Problem kann in 10 Zeilen Code zerlegt werden.
@@alimahir24 würde ich in diesem fall nicht tun. Das frisst mehr Leistung als eine Zeitabhängige Schleife
Danke!
Rekursion war im Studium ein interessantes Theme, doch in der Praxis vermeide ich es. Rekursion ist meist schnell geschrieben aber dafür ineffizient wenn es um Prozessorzeit geht.
Zudem ist der Code für viele schwierig zu lesen