Dirk Paschel: rekursive Funktion

Hallo!

Folgendes scheint nicht zu klappen.

Die Ausgabe ist immer 1

<?
echo TEST(1);
function TEST($a) {
  $output = $a;
  $aa = $a + 1;
  if ($aa >= 5) {
    echo TEST($aa);
    }
  return $output;
}
?>

  1. Hallo!

    Die Ausgabe ist immer 1

    <?
    echo TEST(1);
    function TEST($a) {
      $output = $a;
      $aa = $a + 1;
      if ($aa >= 5) {
        echo TEST($aa);
        }
      return $output;
    }
    ?>

    Das ist nicht verwunderlich. Du rufst TEST ja nur nocheinmal auf, wenn $aa größer oder gleich 5 ist.
    Kurz vorher sagst du $aa = $a + 1, also ist $aa = 2. Es wird einfach $a (1) ausgegeben und beendet.

    Ich hoffe, ich konnte helfen!
    Michael

  2. Hallo,

    Die Ausgabe ist immer 1

    <?
    echo TEST(1);
    function TEST($a) {
      $output = $a;
      $aa = $a + 1;
      if ($aa >= 5) {
        echo TEST($aa);
        }
      return $output;
    }
    ?>

    Wolltest Du nicht eine rekursive Funktion bauen?
    Deine ist eigentlich nicht wirklich rekursiv, da sie mit dem Funktionsergebnis nicht weiterabrbeitet, sondern es lediglich ausgibt.

    <?php

    function TEST($a)
     {
       $output = $a;
       if ($a >= 5)
       {
         echo 'Ende erreicht: '.$a;
       }
       else
       {
         $a = 1 + test($a);
       }

    return $output;
    }

    echo TEST(1);

    ?>

    Vielleicht meintest Du es so?
    Hier wird im Else-Zweig mit dem Erbegnis der Funktion weitergearbeitet.

    LG
    Chris