Rekursive Methode beenden?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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 kannst den Countdown ja mal i + 1 machen und Dich dann freuen :D

0

Du musst schreiben

return countDown(i - 1);
Woher ich das weiß:Studium / Ausbildung – Mathematik

Ach, glaube macht doch keinen Unterschied. Nur dann ist der Returnwert undefiniert, wenn er aus dem rekursiven Aufruf zurück kehrt..

0
@Suboptimierer

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.

2

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.

Was möchtest Du wissen?