Rekursive Methode beenden?

4 Antworten

Vom Beitragsersteller 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.


chilly10  26.02.2020, 13:19

Du kannst den Countdown ja mal i + 1 machen und Dich dann freuen :D

0

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);
Woher ich das weiß:Studium / Ausbildung – Mathematik

Suboptimierer  26.02.2020, 12:38

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

0
daCypher  26.02.2020, 12:43
@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