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