0Pricing
C Academy · Lektion

Rekursion im Vergleich zu Iteration

Wann Sie welche Variante wählen sollten.

Rekursion im Vergleich zu Iteration ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.

Zwei Arten der Wiederholung

Viele Probleme lassen sich entweder durch Rekursion oder Iteration lösen. Bei der Iteration werden Schleifen verwendet, bei der Rekursion Funktionsaufrufe.

Beide Ansätze können dasselbe Ergebnis liefern, unterscheiden sich jedoch in Stil, Speicherbedarf und Geschwindigkeit.

Fakultät mit einer Schleife

Hier wird die Fakultät iterativ mit einer for-Schleife berechnet. Die Funktion ruft sich nicht selbst auf; eine einzelne Variable akkumuliert das Produkt.

#include <stdio.h>

long factorial(int n) {
    long result = 1;
    for (int i = 2; i <= n; i++)
        result *= i;
    return result;
}

int main(void) {
    printf("%ld\n", factorial(6));
    return 0;
}

Fakultät mit Rekursion

Die rekursive Version ist kürzer und bildet die mathematische Definition direkt ab.

Beide geben für factorial(6) den Wert 720 aus, verwenden jedoch unterschiedliche Mechanismen.

long factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

Unterschiede beim Speicherbedarf

Iteration benötigt normalerweise eine feste, geringe Speichermenge: nur einige lokale Variablen.

Bei der Rekursion kommt für jeden Aufruf ein Stack-Frame hinzu. Tiefe Rekursion benötigt daher mehr Speicher und kann den Stack-Speicher erschöpfen.

Unterschiede bei der Geschwindigkeit

Jeder rekursive Aufruf verursacht einen gewissen Aufwand: Ein Stack-Frame muss eingerichtet und anschließend wieder verlassen werden.

Bei einfachen Zählaufgaben sind Schleifen oft etwas schneller, weil sie diesen Aufruf-Overhead vermeiden.

Wann Rekursion die bessere Wahl ist

Rekursion eignet sich besonders, wenn ein Problem von Natur aus rekursiv ist, etwa bei Bäumen, verschachtelten Strukturen oder Divide-and-Conquer-Algorithmen.

In solchen Fällen ist rekursiver Code kürzer und verständlicher als eine entsprechende Schleife mit einem manuell verwalteten Stack.

Wann Iteration die bessere Wahl ist

Bei einfacher linearer Wiederholung, etwa beim Summieren eines Arrays oder beim Zählen, ist eine Schleife unkomplizierter und benötigt konstanten Speicher.

Außerdem besteht bei großen Eingaben kein Risiko eines Stack-Überlaufs.

int sum_array(int a[], int n) {
    int total = 0;
    for (int i = 0; i < n; i++)
        total += a[i];
    return total;
}

Dieselbe Aufgabe, beide Stile

Die Summe von 1 bis n lässt sich auf beide Arten berechnen. Hier ist die iterative Version, die dasselbe Ergebnis wie die Rekursion zurückgibt.

#include <stdio.h>

int sum_to(int n) {
    int total = 0;
    for (int i = 1; i <= n; i++)
        total += i;
    return total;
}

int main(void) {
    printf("%d\n", sum_to(100));
    return 0;
}

Rekursion in eine Schleife umwandeln

Jede Rekursion kann in eine Iteration umgeschrieben werden, manchmal mithilfe eines eigenen expliziten Stacks.

Einfache lineare Rekursion, etwa für Fakultät oder Summe, lässt sich mit einer Akkumulatorvariablen in eine gewöhnliche Schleife umwandeln.

#include <stdio.h>

int main(void) {
    int n = 5, result = 1;
    while (n > 1) { result *= n; n--; }
    printf("%d\n", result);
    return 0;
}

Hinweis zur Endrekursion

Ein endrekursiver Aufruf ist die letzte Aktion einer Funktion. Einige Compiler optimieren ihn zu einer Schleife und verwenden dabei denselben Stack-Frame wieder.

C garantiert dies jedoch nicht. Verlassen Sie sich daher bei tiefer Rekursion nicht darauf.

int sum_tail(int n, int acc) {
    if (n == 0) return acc;
    return sum_tail(n - 1, acc + n);
}

Den passenden Ansatz wählen

Fragen Sie sich: Ist das Problem von Natur aus verschachtelt oder ein Divide-and-Conquer-Problem? Dann eignet sich Rekursion.

Handelt es sich um eine einfache lineare Wiederholung mit möglicherweise sehr großen Eingaben? Dann ist Iteration sicherer und oft schneller.

Kurztest

Vergleichen Sie die beiden Ansätze.

Zusammenfassung

Mit Rekursion und Iteration lassen sich dieselben Probleme lösen. Schleifen verwenden konstanten Speicher und eignen sich hervorragend für lineare Aufgaben; Rekursion ist bei verschachtelten Problemen und Divide-and-Conquer-Problemen übersichtlicher, benötigt aber für jeden Aufruf einen Stack-Frame.

Häufig gestellte Fragen

Ist die Lektion „Rekursion im Vergleich zu Iteration“ kostenlos?

Ja — der vollständige Text von „Rekursion im Vergleich zu Iteration“ 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 „Rekursion im Vergleich zu Iteration“?

Wann Sie welche Variante wählen sollten. 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 3 von 4.

Wie lange dauert die Lektion „Rekursion im Vergleich zu Iteration“?

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

  1. Wie Rekursion funktioniert
  2. Klassische Rekursionsprobleme
  3. Rekursion im Vergleich zu Iteration
  4. Stack Overflow vermeiden
← Zurück zu C Academy