Websiteentwicklung: PHP: Rekursion

Aus Wikibooks

Wechseln zu: Navigation, Suche
Websiteentwicklung PHPBild:Wikibooks buchseite.svg 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).


Zurück zu Reguläre Ausdrücke | Hoch zu PHP | Vor zu PHP-Referenz
Persönliche Werkzeuge
Buch erstellen
  • Artikel hinzufügen
  • Hilfe zu Sammlungen