Websiteentwicklung: PHP: Rekursion
Aus Wikibooks
Hier ein kleines Beispiel zur Rekursion mit einer rekursiven PHP Funktion f() zur Berechnung der Fakultät einer ganzen Zahl:
function f($i) { if (!is_integer($i) or $i < 1) { return "Fehler"; } if ($i == 1) { return $i; } else { return $i * f(--$i); } }
In Zeile 2 prüft die Funktion, ob der Aufrufparameter gültig ist und beendet sich, falls der Parameter keine ganze Zahl (is_integer) oder kleiner 1 ist. Die Zeile 5 enthält die Abbruchbedingung für die Rekursion: Sobald der Parameter 1 ist, liefert die Funktion 1 zurück (und ruft sich nicht mehr selbst rekursiv auf). Wird die Abbruchbedingung nicht erfüllt, erfolgt in Zeile 9 die eigentliche Rekursion durch Aufruf von f(--$i). Hier wird der Parameter $i zuerst dekrementiert, bevor er der Funktion übergeben wird. So wird - hoffentlich - sichergestellt, daß die Funktion einmal abbricht, wenn der Parameter < 2 wird.
Aufruf erfolgt dann z.B.:
$f = f(5);
Dieses einfache Beispiel könnte natürlich auch als while Konstrukt realisiert werden:
function f($i) { if (!is_integer($i) or $i < 1) { return "Fehler"; } $ret = $i; while ($i-- > 1) { $ret *= $i; } return $ret; }
Rekursive Funktionen sind sehr praktisch beim Bearbeiten rekursiver Datenobjekte (Bäume).

