Buchgenerator (deaktivieren)

Websiteentwicklung: PHP: Rekursion

Aus Wikibooks

Wechseln zu: Navigation, Suche
Nuvola apps bookcase.svg Websiteentwicklung Nuvola apps bookcase 1.svg PHPNuvola mimetypes dvi.png Rekursion


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).


Wikibooks buchseite.svg Zurück zu Reguläre Ausdrücke | One wikibook.svg Hoch zu PHP | Wikibooks buchseite.svg Vor zu PHP-Referenz
Persönliche Werkzeuge