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