Rekursive Funktion - Hilfe!!!



  • Hallo,

    ich brauche unbedingt Hilfe bei der folgenden Funktion:

    unsigned long int F2(int Arg)
    {
      if(Arg == 0) return 1;
      else return (F2 (Arg - 1) + F2 (Arg - 1));
    }
    

    Ich weiß einfach nicht, wie ich auf das Ergebnis 8 komme, wenn ich Arg=3 setze.
    Könnte jemand mir vielleicht aufschreiben, was genau passiert?
    Dies ist eine Beispielaufgabe für eine Klausur (wird nicht am PC geschrieben) - und ich weiß beim besten Willen nicht, wie ich da ein Ergebnis rausbekommen soll.
    Bitte helft mir

    Schon mal vielen Dank für eure Antworten
    Gruß
    Keine_Ahnung



  • allgemein ist das Ergebnis 2

    bei 3 hast du 4 Iterationen bis das Ergebnis 0 ist (return 1);
    bei 4 Iterationen wird insgesamt 8 * 1 zurück gegeben (bzw. 4 * (1 + 1))



  • F2(3)
    = f2(3-1)+f2(3-1)
    = f2(2) + f2(2)
    = 2f2(2)
    = 2
    ( 2* f2(2-1) )
    = 2*( 2* f2(1))
    = 4* (2* f2( 0)
    =4* (2* (1))
    = 8

    so klar?



  • F2(3) = F2(3 - 1) + F2(3 - 1)
          = F2(2) + F2(2)
          = F2(2 - 1) + F2(2 - 1)    +     F2(2 - 1) + F2(2 - 1)
          = F2(1) + F2(1)    +     F2(1) + F2(1)
          = F2(0)+F2(0) + F2(0)+F2(0)    +     F2(0)+F2(0) + F2(0)+F2(0)
          = 1+1 + 1+1    +    1+1 + 1+1
          = 8
    


  • Arno Nym schrieb:

    F2(3) =          F2(3 - 1)        +          F2(3 - 1)
          =            F2(2)          +           F2(2)
          = F2(2 - 1)   + F2(2 - 1)   +  F2(2 - 1)  + F2(2 - 1)
          =    F2(1)    +    F2(1)    +    F2(1)    +   F2(1)
          = F2(0)+F2(0) + F2(0)+F2(0) + F2(0)+F2(0) + F2(0)+F2(0)
          =   1  +  1   +   1  +  1   +   1  +  1   +  1   +  1
          =                           8
    

    Entschuldige Arno Nym, ich musste es einfach mal vernünftig einrücken 😉



  • return (2 * F2 (Arg - 1)));

    wäre aber effektiver ^^


Anmelden zum Antworten