1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Java Collatz-Folge

Dieses Thema im Forum "OS X-Developer" wurde erstellt von fritzl, 06.11.08.

  1. fritzl

    fritzl Wohlschmecker aus Vierlanden

    Dabei seit:
    01.06.08
    Beiträge:
    237
    hi,
    also ich übe seit 1 Woche mit dem Buch "Java ist auch eine Insel" Java Programmierung.
    Die Aufgabe ist es eine Collatz-Folge mit n=27 zu erstellen (wenn n gerade ist /2; wenn nicht 3*n+1)

    also folgendes:


    public class colatz {
    public static void main( String[] args) {

    int n = 27;
    int r = (n%2);

    while ( n > 1) {

    if ( r == 0) {
    n = n /2;
    }
    else {
    n = 3*n+1;
    }
    System.out.println(n);
    }

    }
    }


    dieses Programm gibt folgende Ausgabe :
    82
    247
    742
    2227
    6682
    20047
    60142
    180427
    541282
    1623847
    4871542
    14614627
    43843882
    131531647
    394594942
    1183784827
    -743612814

    dieses jedoch:


    public class colatz {
    public static void main( String[] args) {

    int n = 27;

    while ( n > 1) {

    if ( n%2 == 0) {
    n = n /2;
    }
    else {
    n = 3*n+1;
    }
    System.out.println(n);
    }

    }
    }


    gibt die Richtige undzwar:

    82
    41
    124
    62
    31
    94
    47
    142
    71
    214
    107
    322
    161
    484
    242
    121
    364
    182
    91
    274
    137
    412
    206
    103
    310
    155
    466
    233
    700
    350
    175
    526
    263
    790
    395
    1186
    593
    1780
    890
    445
    1336
    668
    334
    167
    502
    251
    754
    377
    1132
    566
    283
    850
    425
    1276
    638
    319
    958
    479
    1438
    719
    2158
    1079
    3238
    1619
    4858
    2429
    7288
    3644
    1822
    911
    2734
    1367
    4102
    2051
    6154
    3077
    9232
    4616
    2308
    1154
    577
    1732
    866
    433
    1300
    650
    325
    976
    488
    244
    122
    61
    184
    92
    46
    23
    70
    35
    106
    53
    160
    80
    40
    20
    10
    5
    16
    8
    4
    2
    1


    wo ist der Unterschied? habe lange dran gefummelt bis ich am 1. Programm was verändert hab das schließlich funktionierte.

    Danke!
     
  2. zyklo

    zyklo Wohlschmecker aus Vierlanden

    Dabei seit:
    24.10.06
    Beiträge:
    235
    Bei deiner ersten Version ist r, also die Entscheidungsvariable immer konstant 1, weil 27%2 = 1.
     
  3. fritzl

    fritzl Wohlschmecker aus Vierlanden

    Dabei seit:
    01.06.08
    Beiträge:
    237
    AH! vielen Dank. Muss das int r = (n%2); ja nur in die while Schleife schreiben.. und ich dachte ich hätte einen Denkfehler :D
     

Diese Seite empfehlen