Wo geschieht der "Rücksprung, bei der rekursiven Folge

berserkerdq2

Bekanntes Mitglied
1650918220512.png
Ich habe die Methode selber programmiert.

Das:
1650918285504.png
und das:
1650918291883.png

Konnte ich auch ausgeben. Also mein Ergebnis stimmt.

Das Problem ist, wo muss ich noch Ausgaben machen, damit ich diesen Rücksprung habe? Für dei Aufrufe, habe ich einfach beim Anfang der Methode eine Ausgabe gemacht, wo muss ich das bei den Rücksprüngen machen? Und was gebe ich da dann aus?
 

Anhänge

  • 1650918290931.png
    1650918290931.png
    6,1 KB · Aufrufe: 1
return ggt(b-a, a) ;
zB Was wird hier gemach.
Zuerst wird rechts vom return die Methode ausgeführt und das Ergebnis der Methode als Rückgabe Wert zurückgeben.

Um den RückgabeWert zu sehen. Müsstest du eine Variable benutzen.
Ausgeben und dann mit return zurückgeben.
 
Java:
public class Main
{
    public static void main(String[] args) {
        ggt(15,50);
    }
   
   
 static int ggt(int a, int b){
       int ret;
       System.out.println("start  mit "+a+ " , " +b );
       if (a==b){
           return a;
         
       } else if(a < b){
           ret = ggt(b-a,a);
           System.out.println("aufruf mit "+a+ " , " +b+ " return ist " +ret);
           return ret;
       } else {
           ret = ggt(a-b,b);
           System.out.println("aufruf mit "+a+ " , " +b+ " return ist " +ret);
           return  ret;
       }
     
       
    }
}
Code:
start  mit 15 , 50
start  mit 35 , 15
start  mit 20 , 15
start  mit 5 , 15
start  mit 10 , 5
start  mit 5 , 5
aufruf mit 10 , 5 return ist 5
aufruf mit 5 , 15 return ist 5
aufruf mit 20 , 15 return ist 5
aufruf mit 35 , 15 return ist 5
aufruf mit 15 , 50 return ist 5
Danke, mein Problem ist eher, ich darf keine lokalen Variablen verwenden, habe es mir in Java gemacht, bevor ich IJVM geschrieben habe und ich darf halt keine lokalen variablen verwenden weshalb ret= ggt(a-b,b) nicht geht.

DAS VIEL GRÖßERE PROBLEM:

Ich könnte ja einfach sagen ich rufe in IJVM ggt 2x auf 1x für die Ausgabe udn 1x für den Return wert. ABer dann wird das "start mit" doppelt ausgegeben.... daran hängts bei mir
 

Zurück
Oben