Rekursive Methode beenden?
public static boolean countDown(int i) {
if (i < 0) {
return false;
}
if (i == 0) {
return true;
}
countDown(i - 1);
}
Das ist meine Methode: ich bekomme jedoch den Error: Missing return statement. Wie schreibe ich das am besten um, damit ich trotzdem immer noch eine REKURISVE Methode habe, die einfach i-Mal ausgeführt wird wenn i>0 und true zurückgibt oder wenn i < 0 false;
4 Antworten
Du hast nur Rückgabewerte, falls i kleiner als 0 oder gleich 0 ist, aber keinen für den Fall, dass i größer als 0 ist. Das mag Java nicht.
Ich denke mal, das was du erreichen willst, erreichst du, wenn du vor das "countDown(i - 1);" noch ein return machst.
return countDown(i - 1);
public static boolean countDown(int i) {
if (i < 0) {
return false;
}
if (i == 0) {
return true;
}
return countDown(i - 1);
}
Das kommt daher, weil die return-Dingens eine Ebene tiefer (also Methode {Ebene 1 ...{ Ebene 2 mit return }...}) geschachtelt ist.
Du hast den Fall, wenn i < 0 ist nicht abgedeckt.
Sobald i==0 ist, wird true ausgegeben und dann wird die Funktion mit -1, -2, -3 ausgeführt, für wessen Fälle du keinen Return hast.
Du musst schreiben
return countDown(i - 1);
Doch, das ist schon richtig. Wenn im Header steht, dass die Funktion etwas zurückgibt, erwartet Java auch, dass es immer einen Rückgabewert gibt. Nur bei voids kann man das "return" weg lassen.
Ach, glaube macht doch keinen Unterschied. Nur dann ist der Returnwert undefiniert, wenn er aus dem rekursiven Aufruf zurück kehrt..