Also soll ich eine methode schreiben, die Collatz folge berechnet u. auf dem bildschirm ausgibt
Code:
public class RecursiveAlgorithms {
public static void main(String[] args){
byte zahl=Terminal.askByte("Bitte geben Sie eine Zahl n:");
//Terminal.java ist vordefiniert
System.out.println("Die n-te Fibonacci Zahl betraegt:"+fibonacci(zahl));
byte zahl2=Terminal.askByte("Bitte geben Sie eine Zahl b:");
System.out.println("Die Collatz Folge betraegt:" + collatz(zahl2));
}
public static int fibonacci(int n){
if (n==1||n==2) return 1;
else return fibonacci(n-1)+fibonacci(n-2);
}
public static void collatz(int n) {
if (n == 1) return;
else if (n % 2 == 0) collatz(n / 2);
else collatz(3*n + 1);
}
}
beim fibonacci funktioniert alles wunderbar, beim collatz kriege ich eine fehlermeldung, dass
The operator + is undefined for the argument type(s) String, void
es geht um diese zeile:
Code:
System.out.println("Die Collatz Folge betraegt:" + collatz(zahl2));
Genau was die Fehlermeldung sagt:
"Die Collatz Folge betraegt:" + collatz(zahl2)
collatz hat den Rückgabetyp void, also
"Die Collatz Folge betraegt:" + void
und das gibt keinen Sinn.
public class RecursiveAlgorithms {
public static void main(String[] args){
byte zahl=Terminal.askByte("Bitte geben Sie eine Zahl n:");
System.out.println("Die n-te Fibonacci Zahl betraegt:"+fibonacci(zahl));
byte zahl2=Terminal.askByte("Bitte geben Sie eine Zahl b:");
System.out.println("Die Collatz Folge betraegt:" + collatz(zahl2));
}
public static int fibonacci(int n){
if (n==1||n==2) return 1;
else return fibonacci(n-1)+fibonacci(n-2);
}
public static int collatz(int n) {
if (n == 1) return;
else if (n % 2 == 0) collatz(n / 2);
else collatz(3*n + 1);
}
}
kriege ich dan eine fehlermeldung, dass
This method must return a result of type int
es geht um diese Zeile