📘 Kapitel 4 · Funktionen & Strukturierung

Rekursion

Funktionen die sich selbst aufrufen · Basisfall · Fakultät · Fibonacci

20 / 30 Units
Ömer
Kapitel 4: Funktionen & Strukturierung ~45 Min. Theorie + Simulator + Quiz + Spickzettel
Ömer
Ömer sagt:

Rekursion klingt verrückt, ist aber elegant: Eine Funktion ruft sich selbst auf, mit einem kleineren Problem. Das Wichtigste: der Basisfall – sonst läuft es ewig!

Was ist Rekursion?

1. Basisfall (Base Case)

Wann stoppt die Rekursion? Ohne Basisfall: Stack Overflow!

2. Rekursionsfall

Die Funktion ruft sich selbst mit einem kleineren Argument auf.

Fakultät – das klassische Beispiel

fakultaet.cC
int fakultaet(int n) {
    if (n == 0) return 1;     // Basisfall
    return n * fakultaet(n-1); // Rekursionsfall
}
Aufrufkette: fakultaet(4) = 24
f(4) → 4 × f(3)
f(3) → 3 × f(2)
f(2) → 2 × f(1)
f(1) → 1 × f(0)
f(0) = 1 ← Basisfall!
→ 1
→ 2
→ 6
→ 24

Aufbau einer rekursiven Funktion

BestandteilBedeutungBei Fakultät
BasisfallWann stoppt die Rekursion?n == 0 → return 1
RekursionsfallWie wird das Problem kleiner?n * fakultaet(n-1)
AufrufketteWie baut sich der Stack auf?f(4)→f(3)→f(2)→f(1)→f(0)

Häufige Fehler

Warnung: Typische Rekursionsfehler

  • Kein Basisfall: Die Funktion ruft sich endlos selbst auf → Stack Overflow (Absturz!). Jede rekursive Funktion braucht zwingend einen Basisfall.
  • Basisfall nie erreicht: Die Bedingung ist falsch formuliert, sodass der Basisfall übersprungen wird. Beispiel: fakultaet(-1) würde ewig rekursieren wenn keine Prüfung auf negative Zahlen vorhanden ist.
  • Zu tiefe Rekursion: Jeder Aufruf belegt Stack-Speicher. Bei sehr großen Eingaben (z.B. fakultaet(100000)) ist das Stack-Limit schnell erreicht → Absturz.
sicher.cC
int fakultaet(int n) {
    if (n < 0) return -1;  // Schutz vor negativen Zahlen
    if (n == 0) return 1;   // Basisfall
    return n * fakultaet(n - 1);
}

Wann Rekursion, wann Schleife?

RekursionSchleife
LesbarkeitElegant für natürlich-rekursive ProblemeKlarer für einfache Wiederholungen
PerformanceLangsamer (Stack-Overhead)Schneller
GefahrStack OverflowEndlosschleife
TypischBaumstrukturen, Fibonacci, QuicksortAlle anderen

⚡ Code-Simulator

Schreibe eigene Funktionen und teste sie – der Simulator zeigt printf-Ausgaben:

C Simulator – Unit 20 – Funktionen
▶ Ausgabe
– Klicke AUSFÜHREN –
Ömer
Ömer sagt:

Schreibe eigene Funktionen und ändere die Argumente beim Aufruf. So siehst du direkt wie Funktionen Daten verarbeiten!

🎯 Wissens-Quiz

Fragen werden geladen …

📋 Spickzettel

Rekursion
BasisfallWann stoppen?
RekursionsfallSelbst aufrufen mit n-1
Basisfall = Pflicht!Sonst Stack Overflow
n! = n × (n-1)!Fakultät-Formel
Beispiele
fakultaet(n)n * fak(n-1)
fibonacci(n)fib(n-1)+fib(n-2)
summe(n)n + summe(n-1)
potenz(b,e)b * pot(b,e-1)

✅ Checkliste Unit 20

  • Ich kann Basisfall und Rekursionsfall benennen
  • Ich kann eine einfache rekursive Funktion schreiben
  • Ich verstehe die Aufrufkette (Call Stack)
  • Ich kenne die rekursive Fakultät und Fibonacci-Funktion