Aufrufbaum
-
Hi Leute,
Ich bin gerade dran Altklausuren zu bearbeiten und stoße hin und wieder auf die Aufgabe, Aufrufbäume zu erstellen.
Ich kann mir zwar vorstellen wie das Programm abläuft, jedoch fehlt mir ein Schema, dass ich bei so einem Aufrufbaum anwenden sollte. Hat jemand tipps, bzw gibt es sogar eine "Norm"?
Hier ein Beispielcode:
[cpp]
#include <stdio.h>void f(int n) {
printf("n = %d\n", n);
if(n > 1)
f(n-1);
if(n > 2)
f(n-2);
}
int main() {
f(5);
return 0;
}[code]
Liebe Grüße
Til
-
edit:
#include <stdio.h> void f(int n) { printf("n = %d\n", n); if(n > 1) f(n-1); if(n > 2) f(n-2); } int main() { f(5); return 0; }
-
Das nennt sich "Rekursion". Das Schema ist eigentlich nicht anders als bei anderen Funktionen, die aufrufende Funktion wartet so lange auf die aufgerufene Funktion, bis diese zurückkehrt. Du kannst dir das in etwa so vorstellen:
main() f(5) printf(5) f(4) printf(4) f(3) printf(3) f(2) printf(2) f(1) printf(1) f(1) printf(1) f(2) printf(2) f(1) printf(1) f(3) printf(3) f(2) printf(2) f(1) printf(1) .. // Bis man wieder bei main() ist.
-
Ja das war mir ja klar, doch ich muss einen Aufrufbaum erstellen und suche dort ein Schema
-
Tilman1 schrieb:
Aufrufbaum
Was soll das denn sein? Mach mal bitte einen Aufrufbaum für
void bar(int b) { } void foo(int a) { bar(a); } int main() { foo(3); }
an dem ich mich orientieren kann.
-
http://www.gsgym.de/fileadmin/daten/faecher/informatik/infokurse/Rekursion/FIB.gif
Sowas verstehe ich unter einem Aufrufbaum
-
Wenn du mir jetzt noch die Funktion gibst, die zu diesem Baum führt..
-
Das sind die Fibonaccizahlen
-
Tilman1 schrieb:
Das sind die Fibonaccizahlen
Meinst du nicht die sollten so aussehen?
http://de.wikipedia.org/wiki/Fibonacci-Baum
-
Dann hat cooky451 dir im ersten Beitrag schon die Antwort gegeben, du musst bloß anders anordnen. Das was in einer Tiefe unter einem Element steht, wird von diesem aufgerufen. So ruft main f(5) auf. f(5) ruft printf(5), f(4) und f(3) auf. Und so weiter.