Veröffentlicht 12. Dezember 200420 j 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.
13. Dezember 200420 j Hast du mal probiert das Programm schritt für schritt mit nem Debugger zu durchlaufen? Da siehst du ja jeden einzelnen Schritt. Gruß LordK
13. Dezember 200420 j 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 =)
13. Dezember 200420 j 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.
14. Dezember 200420 j 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
14. Dezember 200420 j 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.
14. Dezember 200420 j [...] 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.