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.
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
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 =)
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.
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
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.
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden