Rekursion

Aus VMS1 Tutorial

Wechseln zu: Navigation, Suche

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) = .....
Persönliche Werkzeuge