Schneider: Rekursion

Beitrag lesen

Hallo

Was ich nicht verstehe: der zweite nun folgende Funktionsaufruf dürft doch nie stattfinden...? Oder gibt die Funktion ZeichnePythorasbaum() implizit etwas zurück, bevor sie sich selbst zum zweiten Mal aufruft....?

Sie gibt eben nichts zurück. Tiefe bleibt nach dem Dekrementieren unverändert für den Rest dieser Funktionsinkarnation. Wenn du mit 15 startest rufst du startest du beide Funktionsaufrufe mit jeweils 14.

Das verstehe ich schon. Was ich nicht verstehe, ich stehe gerade auf dem Schlauch:

  
function recfun($text,$tiefe){  
$tiefe++;  
if($tiefe>100)exit;  
  
$format = "Text %s, Tiefe %s \n";  
printf($format, $text, $tiefe);  
  
recfun("machdies",$tiefe);  
recfun("machdas",$tiefe);  
}  
  
recfun("machma",0)  

Ich hätte jetzt erwartet, dass recfun niemals mit "machdas" aufgerufen wird, weil sich die Funktion ja immer erst mit "machdies" erneut aufruft.
Dieses kleine Testscript bestätigt zumal meine Vermutung. Warum ist das so? Was ist der Unterschied von PHP zu JAVA hinslichtlich dieser Unterscheidung?