hallo,
lese grad ein java buch und da habe ich folgende aufgabe versucht zu lösen:
Eine Collatz-Folge (bekannt auch als Syracuse-Problem, Kakutani-Poblem, Hasse-Algorithmus und Ulam-Problem) von Lothar Collatz, 1937 ist definiert durch
n -> n/2, falls n gerade ist, n -> 3n+1,
falls n ungerade ist. Die Folge ist beendet, wenn 1 erreicht ist.
Beginnt man etwa mit n = 7, durchläuft der Algorithmus die folgenden Zahlen:
7 -> 22 -> 11 -> 34 -> 17 -> 52 -> 26 -> 13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
Berechne die Collatz-Folge für den Startwert 27.
dazu habe ich folgenden code geschrieben:
ich habe versucht die aufgabe mittels indirekter rekursion zu lösen. d.h. jetzt, dass bei mir die erste collatz methode in zeile nichts anderes tun soll außer die zweite collatz methode aufzurufen.
mein compiler sagt mir aber, dass gerade in zeile 6 ein fehler vorliegt. genauer steht:
Collatz.java6: ´.class´ expected
ähm was ist dran falsch....
edit: ich hab mal getestet, wenn ich die 1. methode weglasse und nur mit der 2. arbeite dann funktioniert das, aber dann gibt er mir ein einziges mal die nächste folgende zahl aus. aber ich will ja ne folge haben, und da muss ich die methode ja mehrmals aufrufen können.
lese grad ein java buch und da habe ich folgende aufgabe versucht zu lösen:
Eine Collatz-Folge (bekannt auch als Syracuse-Problem, Kakutani-Poblem, Hasse-Algorithmus und Ulam-Problem) von Lothar Collatz, 1937 ist definiert durch
n -> n/2, falls n gerade ist, n -> 3n+1,
falls n ungerade ist. Die Folge ist beendet, wenn 1 erreicht ist.
Beginnt man etwa mit n = 7, durchläuft der Algorithmus die folgenden Zahlen:
7 -> 22 -> 11 -> 34 -> 17 -> 52 -> 26 -> 13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
Berechne die Collatz-Folge für den Startwert 27.
dazu habe ich folgenden code geschrieben:
Java:
public class Collatz
{
static void collatz (int a)
{
collatz(int n);
}
static int collatz(int n)
{
if((n % 2) == 0 )
return n/2;
if((n % 2)!= 0)
return 3*n+1;
return n;
}
public static void main(String [] args)
{
System.out.print(collatz(27));
}
}
ich habe versucht die aufgabe mittels indirekter rekursion zu lösen. d.h. jetzt, dass bei mir die erste collatz methode in zeile nichts anderes tun soll außer die zweite collatz methode aufzurufen.
mein compiler sagt mir aber, dass gerade in zeile 6 ein fehler vorliegt. genauer steht:
Collatz.java6: ´.class´ expected
ähm was ist dran falsch....
edit: ich hab mal getestet, wenn ich die 1. methode weglasse und nur mit der 2. arbeite dann funktioniert das, aber dann gibt er mir ein einziges mal die nächste folgende zahl aus. aber ich will ja ne folge haben, und da muss ich die methode ja mehrmals aufrufen können.