Rekursive Funktion



  • Hallo,

    int function(int zahl) {
        if(zahl)
            return (zahl <= 1) ? zahl : function(zahl-2) + function(zahl-1);
        return 0;
    }
    

    diese Funktion berechnet die Fibonacci-Zahlenfolge.

    Ich versuche vergeblich diese Funktion zu verstehen. Mich verwirrt u.a. der Funktionsaufruf in der Funktion selbst.

    Z.B. kommt für 10 die Zahl 55 raus, aber ich weiß nicht wie die Funktion das macht.

    Kann mir jemand die Funktion erklären?



  • Versuche auf einem Blatt Papier aufzuzeichnen wie/wann die Funktionen aufgerufen werden.

    Evtl. ist es geschickt erst eine einfachere rekursive Funktion zu betrachten. z.B. rekursive Berechnung der Fakultät.



  • Ja hab ich schon, aber das passt nicht. Kann es sein, dass beim return-wert immer +1 rauskommt und das solange summiert wird bis n<1 ?



  • Fang bei 0 an zu rechnen.
    Und dann 1.

    Bei 2 hast du dann
    function(zahl-2) + function(zahl-1)
    das ist
    function(0) + function(1);
    Die Werte kennst du ja bereits und kannst sie einsetzen.

    Dann kommt 3:
    function(1) + function(2);
    Auch die Werte kennst du ja bereits und kannst sie einsetzen.

    ....

    Beachte dass jeder Funktionsaufruf eigene Variablen und auch einen Rückgabewert hat.



  • edit: oops
    😃


Anmelden zum Antworten