Aufrufgraphen in C++

Hallo!

Es handelt sich bei meiner Aufgabenstellung um keine Hausübung, die jemand anders lösen soll.

Wie man sieht habe ich die compilierte Lösung bereits.

Ich würde nur gerne jeden Aufruf der Rekursion aufzählen können und auf dasselbe Ergebnis wie in der compilierten Version kommen.

Ich wäre sehr dankbar wenn mir jemand helfen könnte.

Lg

Jutta

Hi Jutta,

ich hab Dein Programm mal in Java übernommen und ein paar Ausgaben reingeschrieben. Das Ergebnis sieht dann so aus:

Recursion level: 1
 a = 2 b = 2 c = 2
 Entering (b \> 1)
Recursion level: 2
 a = 1 b = 1 c = 2
 Entering (b 1)
Recursion level: 5
 a = 0 b = 1 c = 2
 Entering (a == 0) && (b == 1)
Recursion level: 6
 a = 0 b = 2 c = 2
 Entering (b \> 1)
Recursion level: 7
 a = -1 b = 1 c = 2
 Entering (a 1)
Recursion level: 11
 a = -1 b = 3 c = 6
 Entering (a 1)
Recursion level: 15
 a = 0 b = 2 c = 22
 Entering (b \> 1)
Recursion level: 16
 a = -1 b = 1 c = 22
 Entering (a 1)
Recursion level: 20
 a = -1 b = 2 c = 3
 Entering (a 1)
Recursion level: 24
 a = -1 b = 45 c = 11
 Entering (a 

Der Quellcode dazu:


    
     public int rec(int a, int b, int c)
     {
     level++;
     System.out.println("Recursion level: "+ level);
     System.out.println("\ta = "+ a +" b = "+ b+ " c = "+ c);
     int result = 0;
    
     if ((a == 0) && (b == 1))
     {
     System.out.println("\tEntering (a == 0) && (b == 1)");
     result = 2 + c;
     }
     else
     if ((a 1)
     {
     System.out.println("\tEntering (b \> 1)");
     result = c + rec(a - 1, rec(a - 1, b - 1, c), rec(a - 1, b, b));
     }
     else
     {
     System.out.println("\tEntering (b 
    
    Vielleicht hilft Dir das, aus dem ganzen etwas schlauer zu werden.
    
    Gruss,
    
    Herb