I have just started learning Java for university with some excercises. I am not new to programming, only to Java. I have followed all instrucions, but Java's return function does some really weird things. I have inserted some debug outputs to better understand the code. CMD.output of the program is included.
I thought that the function would terminate directly after return. But why does it not do in this case?
public class Rekursion {
public static void main(String[] args) {
int zahl = 10;
System.out.println("debugStart");
boolean even = isEven(zahl);
System.out.println("debugEnd");
if (even == true) {
System.out.println(zahl + " is even");
} else {
System.out.println(zahl + " is uneven");
}
}
public static boolean isEven(int n) {
System.out.println(n);
if (n > 1) {
System.out.println("debugx");
isEven(n - 2);
}
if (n == 0) {
System.out.println("debug1");
return true;
} else if (n == 1) {
System.out.println("debug2");
return false;
} else {
System.out.println("ERROR");
return false;
}
}
}
Output (cmd):
debugStart
10
debugx
8
debugx
6
debugx
4
debugx
2
debugx
0
debug1
Program needs to stop here, normally. But it continues....
ERROR
ERROR
ERROR
ERROR
ERROR
debugEnd
10 is uneven
You should return
the recursion call too,
if(n>1){
System.out.println("debugx");
return isEven(n-2);//return at this point
}
As you haven't returned, your recursive calls are reaching else
statements hence returning false
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With