Die Rekursion ist ein spezieller Aufruf von Funktionen, nämlich wenn Funktionen sich selbst aufrufen. Da bei einem Aufruf sich die Funktion wieder selbst aufruft, benötigt die Funktion wie bei den Schleifen eine Abbruchbedingung, damit die Selbstaufrufe nicht endlos sind.
In dem folgenden Beispiel, welches lediglich eine Bildschirmausgabe via Rekursion zeigt, wird der Abbruch anhand einer Zählvariable entschieden – wie bei den Schleifen. Ist x größer 0 erfolgt eine Ausgabe und ein rekursiver Aufruf mit einem dekrementierten Zählwert. Ist der Zählwert bei 0 angelangt, erfolgt kein rekursiver Aufruf mehr.
#include<stdio.h> int printLines(int x) { if(x > 0) { printf("\nZeile Nr. %d", x); printLines(x-1); } } int main() { printLines(5); return 0; }
Zeile Nr. 5 Zeile Nr. 4 Zeile Nr. 3 Zeile Nr. 2 Zeile Nr. 1
Rekursion-Beispiel Fakultät
Nun ein sinnvolleres und gern verwendetes Beispiel, die Berechnung der Fakultät mittels Rekursion. Bei der Berechnung der Fakultät wird solange ein Produkt mit der dekrementierten Zahl gebildet, bis die Zahl bei der 1 angelangt ist. Zum Beispiel ist die Fakultät Vier: 4! = 4 * 3 * 2 * 1 = 24.
#include<stdio.h> int fakultaet(int x) { if(x > 1) { return x * fakultaet(x-1); }else { return 1; } } int main() { int a = 6; printf("Fakultaet von %d ist %d\n", a, fakultaet(a)); return 0; }
Fakultaet von 6 ist 720