Zum Inhalt springen

Informatik · Klasse 9–13 · aktualisiert

Rekursion in der Informatik einfach erklärt

Du lernst, wie Aufgaben durch Selbstaufrufe gelöst werden, wann diese enden und wie du dasselbe Ergebnis mit einer Schleife berechnen kannst.

0 von 9 Aufgaben gelöst

Rekursion in der Informatik einfach erklärt

Kurz gesagt

Eine Funktion ist ein Programmteil, der zu einer Eingabe ein Ergebnis liefert. Bei direkter Rekursion ruft sie sich selbst auf. Ein Basisfall liefert ein Ergebnis ohne weiteren Selbstaufruf; die anderen Aufrufe müssen diesen Fall erreichen.

Ein Aufruf startet eine Funktion mit einer bestimmten Eingabe. Der Rückgabewert ist das Ergebnis, das dieser Aufruf zurückliefert. Du beschreibst hier Funktionen durch Regeln in Worten und Rechnungen und untersuchst, wie ihre Aufrufe ablaufen.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Termi das Ziel für dich ab.

4 Abschnitte

Bei direkter Rekursion ruft eine Funktion sich selbst auf. Ihre Regeln unterscheiden einen Fall ohne weiteren Selbstaufruf und einen Fall mit Selbstaufruf.

Der Rekursionsanfang heißt auch Basisfall. Hier liefert die Funktion direkt ein Ergebnis zurück. Die Abbruchbedingung legt fest, wann dieser Fall gilt. Der Rekursionsschritt enthält den Selbstaufruf. Für einen erfolgreichen Ablauf muss dessen Eingabe so verändert werden, dass schließlich ein Basisfall erreicht wird.

Betrachte die ausgedachte Funktion „zaehle“. Ihre Eingabe n ist eine ganze Zahl ab null. Bei n=0 gibt sie direkt 0 zurück. Bei n>0 berechnet sie 1+\operatorname{zaehle}(n-1) und gibt dieses Ergebnis zurück. Die Schreibweise \operatorname{zaehle}(n-1) bedeutet: Rufe „zaehle“ mit der Eingabe n-1 auf. Der nächste Aufruf erhält also eine um eins kleinere Eingabe.

Definition

Rekursionsanfang und Rekursionsschritt

Der Rekursionsanfang liefert ein Ergebnis ohne weiteren Selbstaufruf. Der Rekursionsschritt ruft die Funktion erneut auf und kann deren Ergebnis weiterverarbeiten.

Beispiel: Die Regel von „zaehle“ anwenden

  1. 1Bei \operatorname{zaehle}(2) gilt die Abbruchbedingung n=0 noch nicht.
  2. 2Der Rekursionsschritt verlangt 1+\operatorname{zaehle}(1).
  3. 3Weitere Aufrufe führen zu \operatorname{zaehle}(0). Dieser Basisfall gibt direkt 0 zurück.

Teste dich

LeichtDu startest zaehle mit der Eingabe 6. Welcher Selbstaufruf folgt unmittelbar?

Alles auf einen Blick

Rekursion

  • Aufbau

    Der Basisfall gibt direkt ein Ergebnis zurück; der Rekursionsschritt enthält den Selbstaufruf.

  • Ablauf

    Auf die Aufrufe bis zum Basisfall folgen die Rückgaben von innen nach außen.

  • Abbruch

    Die Eingabeänderung muss die Abbruchbedingung nach endlich vielen Schritten erreichbar machen.

  • Speicher

    Zu viele offene Aufrufe können den Aufrufstapel einer Umsetzung überlaufen lassen.

  • Vergleich

    Rekursion und Iteration berechnen bei der gezeigten Fakultät dasselbe Produkt; iterative Verfahren benötigen meist weniger Aufwand und Speicher.

Musteraufgabe · Schritt für Schritt

Mit einer ausgedachten Funktion rechnen

  1. 1Die Funktion „sterne“ erlaubt ganze Eingaben ab null. Bei n=0 gibt sie 1 zurück, sonst berechnet sie 2+\operatorname{sterne}(n-1). Gesucht ist \operatorname{sterne}(3).
  2. 2Die Aufrufe haben nacheinander die Eingaben 3, 2, 1 und 0. Jeder der ersten drei Aufrufe wartet noch darauf, 2 zum inneren Ergebnis zu addieren.
  3. 3Der Basisfall \operatorname{sterne}(0) gibt 1 zurück.
  4. 4Damit gibt \operatorname{sterne}(1) den Wert 2+1=3 zurück.
  5. 5Danach gibt \operatorname{sterne}(2) den Wert 2+3=5 zurück.
  6. 6Schließlich gibt \operatorname{sterne}(3) den Wert 2+5=7 zurück. Das gesuchte Ergebnis ist 7.

Fehler finden

Prüfe den Ablauf der Funktion „bleib“ In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Gibt eine Funktion für eine Eingabe direkt ein Ergebnis ohne weiteren Selbstaufruf zurück, ist dieser Fall der . Eine Funktion hat ihren Basisfall bei null und ruft sich sonst mit unveränderter Eingabe auf. Ein Start mit einer positiven Zahl führt daher . Wird die Fakultät mit einer Schleife statt mit Selbstaufrufen berechnet, heißt dieses Vorgehen .

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Rekursion

LeichtDie ausgedachte Funktion „signal“ gibt bei n = 0 direkt 8 zurück. Für positive ganze Eingaben ruft sie sich mit n − 1 auf und gibt dessen Ergebnis zurück. Was ist ihr Rekursionsanfang?
MittelDie ausgedachte Funktion „bonus“ erlaubt ganze Eingaben ab null. Bei n = 0 gibt sie 2 zurück, sonst berechnet sie 3 + bonus(n − 1). Welchen Wert gibt bonus(2) zurück?
SchwerDie ausgedachte Funktion „huepf“ erlaubt auch negative ganze Eingaben. Bei n ≤ 0 gibt sie 1 zurück, sonst ruft sie huepf(n − 2) auf. Du startest mit 7. Wann greift der Basisfall erstmals?

Weiterlesen in Informatik