Rekursion
Aus VMS1 Tutorial
Eine rekursive Funktion ruft sich selbst auf, um das gewünschte Ergebnis zu berechnen.
Im VMS1 sind beispielsweise die Funktionen: extra_securevars ( $array ) und print_a ( $TheArray ) rekursiv.
Beispiel
Folgende Funktion berechnet die Fakultät einer Zahl:
<?php function fakultät($n){ if($n<=1){ return 1; }else{ return n * fakultät($n-1); } } ?>
Ein Aufruf von fakultät(3) hätte zur Folge:
fakultät(3) = 3* fakultät(2) = 3*2* fakultät(1) = 3*2*1 = 6
Wichtig ist bei rekursiven Funktionen ein Abbruchkriterium, im obigen Beispiel alle Eingabezahlen kleiner gleich 1.
Folgende Funktion:
function fakultät_2($n){ if($n==1){ return 1; }else{ return n * fakultät_2($n-1); } }
Führt bei Eingaben grösser gleich 1 immer noch zum korrekten Ergebnis, wenn man aber bspw. fakultät_2(-1) aufruft, hat man eine Endlosschleife:
fakultät_2(-1) = -1 * fakultät_2(-2) = -1 * -2 * fakultät_2(-3) = .....
