tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
525
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    anni anni ist offline Rookie
    Registriert seit
    Aug 2010
    Beiträge
    8
    Hallo,
    Aufgabe ist die Berechnung der Collatz-Folge nach einem eingegebenen Startwert.
    Nun zum Problem. Bei der void f(int n) Methode(ab Zeile 37) soll die Schleife eigentlich nur durchlaufen werden, bis das erste Mal die 1 auftritt. Jedoch rechnet mein Programm immer weiter.
    Sieht vielleicht jemand den Fehler?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    
    class Folge {
     
      int a_0;
      int laenge;
      int max;
     
     
    Folge (int x) {
     a_0 = x;
     if (x <= 0) { 
     a_0 = 1;
     }
     }
     
     
     
     
     
     
    void ausgeben(){
    System.out.println("Der Startwert ist: "+a_0);
    System.out.println("Die gesamte Anzahl der Glieder ist: "+laenge);
    System.out.println("Die maximale Zahl der Folge ist: "+max);
     
    }
     
     
    int next (int a) {
    if (a % 2 == 0) {
        a = a/2;
        } else {
          a = 3*a+1;
          }
          return a;
          }
     
    void f(int n) {
     int folge = a_0;
     for ( int i= 0; i < n; i++) {
         folge = next(folge);
         System.out.println(folge);
         
         
        }
    }
    void f() {
      laenge = 1;
      int folge = a_0;
      while (folge > 1) {
      folge = next (folge);
      laenge ++;
      System.out.println(folge);
      max = Math.max(max, a_0);
      
     
      }
      
      
      
      }
     
        
     
     
     
     
     
     
     
     
     
     
     
    }
    Geändert von anni (14.12.10 um 10:31 Uhr)
     

  2. #2
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Klar rechnet er immer weiter, du hast ja auch keine Abbruchbedingung in der for schleife
    Falls dein Wert 1 erreicht, mach nen break;
    Ich weiss einige finden Loesungen mit break nicht schoen, funktioniert jedoch
     
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  3. #3
    anni anni ist offline Rookie
    Registriert seit
    Aug 2010
    Beiträge
    8
    Ja genau, hab ich dann auch gesehen. Jetzt funktioniert es.
    Danke trotzdem.
     

  4. #4
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Dann nutze doch bitte den Erledigt Button rechts von "Auf Thema antworten"
     
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 24.11.10, 11:28
  2. Fibinacci-Folge
    Von chaosente im Forum PHP
    Antworten: 4
    Letzter Beitrag: 06.11.05, 16:12
  3. Dropdown mit variierendem Folge-Dropdown
    Von die_Ahnungslose im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 11.10.05, 18:22
  4. Antworten: 4
    Letzter Beitrag: 03.02.04, 12:50
  5. Antworten: 2
    Letzter Beitrag: 23.09.03, 10:56