我不能为我的生活弄清楚为什么这会返回0而不是5."我"在它到达最后一个return语句之前不断增加,但它总是从堆栈中的第一个调用返回0。我认为,因为最近对堆栈的调用会在块中返回" i == 5"首先它将返回并打印5。
返回0
public static void main(String[] args) {
System.out.println(incrementI(0));
}
public static int incrementI(int i) {
if (i == 5){
return i;
} else {
incrementI(i + 1);
}
return i;
}
返回5
public static int incrementI(int i) {
if (i == 5){
return i;
} else {
return incrementI(i + 1);
}
}
答案 0 :(得分:3)
想象一下你写了这样的功能:
public static int square(int x) {
pow(x, 2);
return x;
}
它将计算x
的平方。但是计算后的square不会影响任何东西,函数只返回x。
现在仔细查看您的代码
if (i == 5){
return i;
} else {
something(i + 1);
}
return i;
如果i
不是5
,则会调用something(i + 1)
。然后它会返回一些值,但这个值不会影响任何东西。然后incrementI
函数将仅返回i
,在您的情况下,它是0
。