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 mirSchon 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))
= 8so 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 ^^