Wie Rekursion funktioniert
Abbruchfälle und der Call Stack.
Wie Rekursion funktioniert ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Rekursion?
Rekursion bedeutet, dass eine Funktion sich selbst aufruft, um ein Problem zu lösen. Jeder Aufruf bearbeitet einen kleineren Teil des ursprünglichen Problems.
In C kann sich jede Funktion selbst aufrufen, solange es eine Möglichkeit gibt, dass die Aufrufe schließlich enden.
Der Basisfall
Jede rekursive Funktion benötigt einen Basisfall: eine Bedingung, bei der sie sich nicht mehr selbst aufruft, sondern direkt zurückkehrt.
Ohne Basisfall würde sich die Funktion für immer selbst aufrufen und das Programm zum Absturz bringen.
int countdown(int n) {
if (n == 0) return 0; /* base case */
return countdown(n - 1);
}Der Rekursionsfall
Der Rekursionsfall ist der Teil, in dem die Funktion sich selbst mit einem veränderten Argument aufruft.
Dieses Argument muss sich auf den Basisfall zubewegen, sonst endet die Rekursion nie.
int sum_to(int n) {
if (n == 0) return 0; /* base case */
return n + sum_to(n - 1); /* recursive case */
}Ein erstes vollständiges Programm
Lassen Sie uns ein vollständiges Programm ausführen, das mithilfe von Rekursion die Zahlen von 1 bis 5 addiert.
Das Ergebnis sollte 15 sein.
#include <stdio.h>
int sum_to(int n) {
if (n == 0) return 0;
return n + sum_to(n - 1);
}
int main(void) {
printf("%d\n", sum_to(5));
return 0;
}Die Aufrufe nachvollziehen
Es hilft, eine Rekursion von Hand nachzuverfolgen. Für sum_to(3):
sum_to(3) = 3 + sum_to(2)
sum_to(2) = 2 + sum_to(1)
sum_to(1) = 1 + sum_to(0)
sum_to(0) = 0
Anschließend kehren die Aufrufe zurück nach oben: zuerst 1, dann 3 und schließlich 6.
Der Aufruf-Stack
Jeder Funktionsaufruf erhält seinen eigenen Speicherbereich auf dem Aufruf-Stack, der seine Parameter und lokalen Variablen enthält.
Während die Rekursion tiefer geht, sammeln sich Stack-Frames an. Wenn ein Aufruf zurückkehrt, wird sein Frame entfernt und die Kontrolle an den aufrufenden Code zurückgegeben.
Aufbau und Abbau
Rekursion besteht aus zwei Phasen. Beim Aufbau gehen die Aufrufe immer tiefer und bewegen sich auf den Basisfall zu.
Beim Abbau kehrt der Basisfall zurück, und jeder Aufruf beendet seine Arbeit mithilfe des zurückgegebenen Werts.
#include <stdio.h>
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
int main(void) {
printf("%d\n", factorial(4));
return 0;
}Rückgabewerte fließen zurück
Der von einem tieferen Aufruf zurückgegebene Wert wird von dem Aufruf verwendet, der ihn ausgelöst hat.
Deshalb ist die Reihenfolge wichtig: Der tiefste Aufruf wird zuerst abgeschlossen, danach werden die Ergebnisse auf dem Weg zurück im Stack kombiniert.
int power(int base, int exp) {
if (exp == 0) return 1;
return base * power(base, exp - 1);
}Während der Rekursion ausgeben
Sie können vor oder nach dem rekursiven Aufruf etwas ausgeben. Eine Ausgabe davor zeigt die Zahlen auf dem Weg nach unten, eine danach auf dem Weg zurück nach oben.
#include <stdio.h>
void down(int n) {
if (n == 0) return;
printf("%d ", n);
down(n - 1);
}
int main(void) {
down(5);
printf("\n");
return 0;
}Auf dem Weg nach oben ausgeben
Verschieben Sie printf hinter den rekursiven Aufruf, und die Reihenfolge kehrt sich um. Der tiefste Aufruf gibt zuerst etwas aus.
So werden 1 2 3 4 5 statt 5 4 3 2 1 ausgegeben.
#include <stdio.h>
void up(int n) {
if (n == 0) return;
up(n - 1);
printf("%d ", n);
}
int main(void) {
up(5);
printf("\n");
return 0;
}Zwei Regeln zum Merken
Eine korrekte rekursive Funktion folgt zwei Regeln:
1. Sie besitzt mindestens einen Basisfall, der ohne Rekursion zurückkehrt.
2. Jeder rekursive Aufruf bewegt das Argument näher an einen Basisfall.
Wenn Sie eine der beiden Regeln verletzen, läuft das Programm endlos weiter.
Schnelltest
Testen Sie Ihr Verständnis der Grundlagen der Rekursion.
Zusammenfassung
Rekursion löst ein Problem, indem sie sich selbst mit einer kleineren Eingabe aufruft. Sie benötigen immer einen Basisfall zum Beenden und einen Rekursionsfall, der sich auf ihn zubewegt.
Jeder Aufruf verwendet einen Stack-Frame; beim Abbau der Aufrufe fließen die Ergebnisse zurück.
Häufig gestellte Fragen
Ist die Lektion „Wie Rekursion funktioniert“ kostenlos?
Ja — der vollständige Text von „Wie Rekursion funktioniert“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Wie Rekursion funktioniert“?
Abbruchfälle und der Call Stack. Du übst C Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C Academy zu starten?
Keine Vorkenntnisse erforderlich. C Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Wie Rekursion funktioniert“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C Academy-Lektion Code schreiben und ausführen?
Ja. Jede C Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Wie Rekursion funktioniert
- Klassische Rekursionsprobleme
- Rekursion im Vergleich zu Iteration
- Stack Overflow vermeiden