Skip to content
IRC-Coding IRC-Coding
Rekursion Basisfall Rekursionsfall Call Stack Stack Overflow Tail Recursion Fakultät

Rekursion Funktionsweise einfach erklärt

Rekursion: Funktion ruft sich selbst auf bis Abbruchbedingung erreicht.

S

schutzgeist

1 min read

Rekursion Funktionsweise – Basisfall, Rekursionsfall, Call Stack & Stack Overflow

Dieser Beitrag ist eine Begriffserklärung zur Rekursion – inklusive Prüfungsfragen und Tags.

In a Nutshell

Rekursion bezeichnet eine Methode, bei der sich eine Funktion direkt oder indirekt selbst aufruft, bis eine definierte Abbruchbedingung erreicht ist. Sie ist besonders geeignet für Probleme, die sich in Teilprobleme gleicher Struktur zerlegen lassen.

Kompakte Fachbeschreibung

Rekursive Funktionen lösen ein Problem, indem sie es in kleinere, gleichartige Teilprobleme aufspalten. Jede Funktion ruft sich selbst mit einem Teil des ursprünglichen Problems auf, bis eine sogenannte Abbruchbedingung (Basisfall) erreicht ist. Der Funktionsaufruf wird dann in umgekehrter Reihenfolge zurückgegeben (Stackprinzip). Typische Einsatzfelder sind mathematische Berechnungen (Fakultät, Fibonacci-Zahlen), Baumstrukturen oder das Durchsuchen rekursiver Datenmodelle. Der Speicherverbrauch ist jedoch kritisch, da jeder rekursive Aufruf den Stack belastet.

Prüfungsrelevante Stichpunkte

  • Rekursion ist ein Selbstaufrufprinzip innerhalb einer Funktion
  • Eine Abbruchbedingung verhindert unendliche Rekursion
  • Jeder Funktionsaufruf wird auf dem Call Stack gespeichert
  • Wird häufig bei strukturell wiederholenden Problemen eingesetzt (z.B. Baumstrukturen)
  • In der Praxis oft einfacher zu schreiben als iterative Lösungen
  • Kann bei fehlender Abbruchbedingung zu Stackoverflow führen
  • Ressourcenintensiver als Iteration, da jeder Aufruf Speicher benötigt
  • Muss in der Dokumentation nachvollziehbar beschrieben werden

Kernkomponenten

  1. Rekursive Funktion
  2. Basisfall (Abbruchbedingung)
  3. Rekursiver Fall (Selbstaufruf)
  4. Call Stack zur Ablaufverwaltung
  5. Stack Overflow als Fehlerquelle
  6. Tail Recursion als Optimierungsform
  7. Tracing der Aufrufe für Debugging
  8. Anwendung auf rekursive Datenstrukturen
  9. Absicherung gegen endlose Rekursion
  10. Unit-Tests zur Verifikation der Basis- und Rekursionslogik

Praxisbeispiel

// Beispiel: Berechnung der Fakultät einer Zahl
funktion fakultaet(n)
    wenn n == 0 dann
        gib 1 zurück
    sonst
        gib n * fakultaet(n - 1) zurück

Erklärung: Diese Funktion ruft sich solange selbst auf, bis n gleich 0 ist. Danach erfolgt die Rückgabe der Ergebnisse entlang des Call Stacks.

Vorteile und Nachteile

Vorteile

  • Kürzere und oft lesbarere Implementierung
  • Natürlich für rekursive Strukturen wie Bäume oder Verzeichnisse
  • Direkte logische Modellierung mathematischer Formeln

Nachteile

  • Höherer Speicherbedarf durch Call Stack
  • Gefahr von Stackoverflow bei tiefer Rekursion
  • Schwieriger zu debuggen als iterative Ansätze

Typische Prüfungsfragen (mit Kurzantwort)

  1. Rekursion in der Programmierung? Funktion, die sich selbst aufruft, um ein Problem durch Teilprobleme zu lösen.
  2. Bedingung muss rekursive Funktion enthalten? Abbruchbedingung, um unendliche Aufrufe zu vermeiden.
  3. Typisches Anwendungsbeispiel für Rekursion? Traversierung von Baumstrukturen, z.B. in Dateisystemen oder XML-Daten.
  4. Stack Overflow bei Rekursion? Fehler, wenn zu viele Funktionsaufrufe den Stack-Speicher überschreiten.
  5. Rekursive vs. iterative Problemlösung? Rekursion nutzt Selbstaufrufe, Iteration nutzt Schleifenstrukturen.
  6. Gefahr bei fehlerhafter Abbruchbedingung? Funktion ruft sich endlos auf und führt zu einem Stack Overflow.
  7. Optimierungsform für Rekursion? Tail Recursion, die durch Compiler zu Iterationen optimiert werden kann.
  8. Rekursion dokumentieren? Durch Flussdiagramme, Pseudocode und Call-Stack-Analysen.

Wichtigste Quellen

  1. https://stackoverflow.com/questions/2693676
  2. https://javascript.info/recursion
  3. https://www.geeksforgeeks.org/recursion-in-programming
Zurück zum Blog
Share:

Ähnliche Beiträge