BlackFire1984 Geschrieben 12. Dezember 2004 Geschrieben 12. Dezember 2004 public class Aufg2 { public static void main (String [] args){ int x=5; System.out.println("Berechnung = " + weroderwas (x)); } static int weroderwas (int y) { int eins, zwei; System.out.println("y =" +y); if (y==1) {System.out.println("Wende = 0"); return 0;} else if (y%2==0) { eins = 1 + weroderwas (y/2); System.out.println ("eins = " +eins); return eins; } else { zwei = 1 + weroderwas (3*y+1); System.out.println ("zwei = " +zwei); return zwei; } } Ausgabe: y = 5 y = 16 y = 8 y = 4 y = 2 y = 1 Wende = 0 eins = 1 eins = 2 eins = 3 eins = 4 zwei = 5 Berechnung: 5 Nach Wende =0; kann ich dem Programm nicht mehr folgen. Könnte mir vielleicht jemand erklären wie der Ablauf aussieht. Ich bedank mich im Voraus. Zitieren
LordK Geschrieben 13. Dezember 2004 Geschrieben 13. Dezember 2004 Hast du mal probiert das Programm schritt für schritt mit nem Debugger zu durchlaufen? Da siehst du ja jeden einzelnen Schritt. Gruß LordK Zitieren
BenjieAul Geschrieben 13. Dezember 2004 Geschrieben 13. Dezember 2004 Von wem ist das Programm denn? Also die Variablennamen sind ja nicht gerade passend gewählt.Vll helfen dir aussagekräftigere Variablennamen P.S.: Wie kann man denn in Java alles Schritt für Schritt abspielen lassen? Kenn ich noch gar net, würde mich aber mal interresieren =) Zitieren
BlackFire1984 Geschrieben 13. Dezember 2004 Autor Geschrieben 13. Dezember 2004 Ich weiß zwar nicht was ein Debugger ist. ICh hab aber mittels System.out.print überprüft welchen Wert y nach return 0; hat(nämlich 2) weiß aber nicht warum. Deshalb hätte ich gerne diesen Schritt erklärt. Zitieren
kingofbrain Geschrieben 14. Dezember 2004 Geschrieben 14. Dezember 2004 Servus, der Quelltext ist nicht formatiert, deshalb ist es mir zu mühsam, den durchzuschauen. Ein Debugger lässt Dich an bestimmten Breakpoints im Programm anhalten und den aktuellen Zustand der Variablen auslesen. Debugger sind bei jeder vernünftigen IDE dabei und deren Bedienung wird in der Hilfe erklärt. Wenn Du den Quellcode auf das Wesentliche eindampfst und vernünftig formatierst, dann schau ich drüber. Peter Zitieren
BenjieAul Geschrieben 14. Dezember 2004 Geschrieben 14. Dezember 2004 public class Aufg2 { public static void main (String [] args){ int x=5; System.out.println("Berechnung = " + weroderwas (x)); } static int weroderwas (int y) { int eins, zwei; System.out.println("y =" +y); if (y==1) { System.out.println("Wende = 0"); return 0; } else if (y%2==0) { eins = 1 + weroderwas (y/2); System.out.println ("eins = " +eins); return eins; } else { zwei = 1 + weroderwas (3*y+1); System.out.println ("zwei = " +zwei); return zwei; } } } Also erstmal war ein Fehler drinnen, da du unten nicht geschlossen hattest =) Habe mir einfach mal die 2 Minuten Zeit genommen und dein Quellcode formatiert, wollte mir den Quellcode mal angucken. Zitieren
Gast Geschrieben 14. Dezember 2004 Geschrieben 14. Dezember 2004 [...] Ausgabe: y = 5 Eingabewert y = 16 Eingabewert aus dem zweiten Else 5*3+1 y = 8 Eingabewert halbiert, erstes Else y = 4 Eingabewert halbiert, erstes Else y = 2 Eingabewert halbiert, erstes Else y = 1 Eingabewert halbiert, erstes Else Wende = 0 Terminierung der Rekursion, Rückgabe von 0 eins = 1 1 + Rückgabewert, erstes Else eins = 2 1 + Rückgabewert, erstes Else eins = 3 1 + Rückgabewert, erstes Else eins = 4 1 + Rückgabewert, erstes Else zwei = 5 1 + Rückgabewert, zweites Else Berechnung: 5 finaler Rückgabewert an public static void main, zweites Else Nach Wende =0; kann ich dem Programm nicht mehr folgen. Könnte mir vielleicht jemand erklären wie der Ablauf aussieht. Ich bedank mich im Voraus. Das sind mehr als zehn Zeichen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.