Sie sind auf Seite 1von 2

Ausarbeitung für die Matura der 5HIB Rekursion

Rekursion
Rekursive Funktionen sind Funktionen, die sich immer wieder selbst aufrufen.
Meist führt die Verwendung von Rekursion zu der saubersten und elegantesten Lösung einer
Problemstellung. Jedoch ist die Aufgabe nicht immer durch Rekursion zu lösen. Der Code ist in dem meisten
Fällten kürzer, als bei einer iterativen Lösung (mit Schleifen), jedoch ist der (Arbeits-)Speicherverbrauch des
Programms größer und die Programmabarbeitung langsamer (bedingt durch die vielen Funktionsaufrufe).
Möglich ist die Rekursive Programmierung bei prozeduralen- und objektorientierten Programmiersprachen,
nicht jedoch bei Prozessorientierten.
Jede Implementierung mit Hilfe von Rekursion benötigt zwangsweise eine Abbruchbedingung, welche der
Funktion sagt, ob sie sich jetzt ein weiteres Mal aufrufen soll oder nicht. Ohne Abbruchbedingung würde das
Programm in einer Endlosschleife hängen bleiben, und unweigerlich abstürzen (Stack-Overflow, da nicht
beliebig viele Funktionen hintereinander aufgerufen werden können).

Beispiel:
int fakultaet (int n)
{
if (n <= 1) {
return 1;
} else {
return (n * fakultaet(n – 1));
}
}
Diese Funktion berechnet die Fakultät einer gegebenen Zahl. Die Abbruchbedingung ist hier in der dritten
Zeile zu finden (if (n <= 1) return 1;). Diese Funktion ruft sich selber immer wieder mit dem um eins
verminderten Anfangsargument auf, solange dieses größer als eins ist.

Zur Erklärung:
Will man die Fakultät von 4 berechnen, so muss man zunächst die Fakultät von 3 berechnen
und das Ergebnis mit 4 multiplizieren.
Will man die Fakultät von 3 berechnen, so muss man zunächst die Fakultät von 2
berechnen und das Ergebnis mit 3 multiplizieren.
Will man die Fakultät von 2 berechnen, so muss man zunächst die Fakultät von 1
berechnen und das Ergebnis mit 2 multiplizieren.
Will man die Fakultät von 1 berechnen, so muss man zunächst die Fakultät von 0
berechnen und das Ergebnis mit 1 multiplizieren.
Die Fakultät von 0 ist nach Definition 1. (<- das ist die Abbruchbedingung)
Die Fakultät von 1 ist also 1*1=1
Die Fakultät von 2 ist also 2*1=2
Die Fakultät von 3 ist also 3*2=6
Die Fakultät von 4 ist also 4*6=24

Anders kann man auch schreiben:


faktorielle(4 * faktorielle(3* faktorielle(2* faktorielle(1* faktorielle(0)))))

Seite 1 von 2 von Fabian Kasper


Ausarbeitung für die Matura der 5HIB Rekursion

Quellen:
http://de.wikipedia.org/wiki/Rekursive_Programmierung
http://de.wikipedia.org/wiki/Rekursion
http://www.hib-wien.at/leute/wurban/informatik/Rekursion.pdf

Seite 2 von 2 von Fabian Kasper