====== 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}}