Tibly: rekursive Funktion

Guten Morgen!

ich muss  eine rekursive Funktion schreiben habe dass jedoch noch nie gemacht und suche dringend gute (leichtverständliche) Informationen. Habe bis jetzt leider nicht passendes Gefunden, deswegen bitte ich um Eure Hilfe!

mfg
Tibly

  1. Hallo,

    ich muss  eine rekursive Funktion schreiben habe dass jedoch noch nie gemacht und suche dringend gute (leichtverständliche) Informationen. Habe bis jetzt leider nicht passendes Gefunden, deswegen bitte ich um Eure Hilfe!

    Der Klassiker ist die Fakultaetsberechnung:

    function Fakultaet(n)
    {
      if(n==0||n==1)return 1;
      else return n*(Fakultaet(n-1));
    }

    alert(Fakultaet(5)); // 120

    MfG, Thomas

    1. Hi,

      Der Klassiker ist die Fakultaetsberechnung:
      function Fakultaet(n)
      {
        if(n==0||n==1)return 1;

      da fehlt noch was, s.u.!

      else return n*(Fakultaet(n-1));
      }

      alert(Fakultaet(5)); // 120

      Viel Spaß mit:
      alert(Fakultaet(-1));

      (frag mich jetzt aber nicht, was in diesem Fall zu geschehen hätte ...)

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
      http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
      1. Hallo,

        Viel Spaß mit:
        alert(Fakultaet(-1));

        (frag mich jetzt aber nicht, was in diesem Fall zu geschehen hätte ...)

        Dann sollte man z. B. false zurueck geben. Ich wuerde aber bereits vorher abpruefen, ob die Zahl >=0 ist und die Funktion ansonsten gar nicht aufrufen.

        MfG, Thomas

        1. Dann sollte man z. B. false zurueck geben. Ich wuerde aber bereits vorher abpruefen, ob die Zahl >=0 ist und die Funktion ansonsten gar nicht aufrufen.

          Ganzzahligkeit ist zudem ebenfalls zu fordern.

          MfG, Thomas

          1. Ganzzahligkeit ist zudem ebenfalls zu fordern.

            Nicht, wenn man sich auf die Gammafunktion bezieht (dafür müsste man die Werte zwischen 0 und 1 aber in einer Tabelle nachschlagen)

            Negativ wäre dann ebenfalls erlaubt (bis auf negativ-ganzzahlige Werte).

            Gruß

            rbs

            1. Hallo,

              Ganzzahligkeit ist zudem ebenfalls zu fordern.

              Nicht, wenn man sich auf die Gammafunktion bezieht (dafür müsste man die Werte zwischen 0 und 1 aber in einer Tabelle nachschlagen)

              Wieso nachschlagen, das Thema Gamma-Funktion kam hier auch schon vor: http://forum.de.selfhtml.org/archiv/2002/1/2942/#m16861.

              MfG, Thomas

      2. Hallo,

        Viel Spaß mit:
        alert(Fakultaet(-1));

        function Fakultaet(n)
        {
          if(isNaN(n)||n<0||parseInt(n)!=n)return undefined;
          else if(n==0||n==1)return 1;
          else return n*(Fakultaet(n-1));
        }

        MfG, Thomas

    2. Hallo Thomas,

      ich muss  eine rekursive Funktion schreiben habe dass jedoch noch nie gemacht und suche dringend gute (leichtverständliche) Informationen. Habe bis jetzt leider nicht passendes Gefunden, deswegen bitte ich um Eure Hilfe!

      Der Klassiker ist die Fakultaetsberechnung:

      function Fakultaet(n)
      {
        if(n==0||n==1)return 1;
        else return n*(Fakultaet(n-1));
      }

      alert(Fakultaet(5)); // 120

      Deine Antwort ist für den Frager wertlos, da er offensichtlich nichts über Rekursion weiß. Du hast ihm einfach ein Beispiel (noch dazu ein aus pädagogischer und didaktischer Sicht ausgesprochen ungeeignetes) vorgesetzt ohne jegliche Erläuterung.

      Jetzt hat er zwar eine Funktion, ist aber genauso klug wie vorher.

      Um Rekursion programmieren zu können, muss man erst einmal verstehen, was Rekursion ist. Eine kurze Suche im Netz förderte diese Seite zu Tage, die sinnvolle Beispiele der Rekursion aufzeigt.
      Beispiele, die helfen Rekursion ganzheitlich zu erfassen:

      http://kunst.erzwiss.uni-hamburg.de/Meyer/Hypermed/rekurs.htm#3

      Hat man das Prinzip erst verstanden, dann kann man sich auf die Programmier- und Mathematikebene begeben. Recht gut erscheinen mir diese Dokumente mit dem Problem umzugehen.

      http://www.num.math.uni-goettingen.de/vlin.public/material/rekurs1.pdf
      http://www.num.math.uni-goettingen.de/vlin.public/material/rekurs2.pdf
      [http://www.num.math.uni-goettingen.de/vlin.public/material/rekurs3.pdf]

      Viele Grüße

      Antje