====== Rekursionen ====== 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. ===== Beispiel ===== 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 (=verringerten) Zählwert. Ist der Zählwert bei 0 angelangt, erfolgt kein rekursiver Aufruf mehr. #include using namespace std; printLines(int x); int main() { printLines(5); return 0; } printLines(int x){ if(x > 0) { cout << "\nZeile Nr. " << x); printLines(x-1); } } ==== Ausgabe des Programms ==== Zeile Nr. 5 Zeile Nr. 4 Zeile Nr. 3 Zeile Nr. 2 Zeile Nr. 1 ===== 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 using namespace std; int fakultaet(int x); int main() { int a = 6; cout << "Fakultaet von " << a << " ist " << fakultaet(a); return 0; } int fakultaet(int x) { if(x > 1) { return x * fakultaet(x-1); }else { return 1; } } ==== Ausgabe ==== Fakultaet von 6 ist 720 {{:inf:inf8bi_201819:3:pasted:20190125-084412.png}}