为什么这个返回的递归代码不起作用



我在学校学习java已经几个月了,我们开始了递归。只打印东西的递归,void,非常简单,但我不能完全理解那些有返回的东西。我只是写了一个简单的代码,检查某个值是否小于50。我本可以使用num>=50,但这只是概念的证明。如果它超过50,我只会返回true,如果小于50,我会返回false。由于某种原因,它总是返回false,即使它以前是true。我该怎么解决这个问题?

public static boolean greaterthanfifty(int i, int counter) {
if(i > 0 && counter == 50) {
System.out.println("First if: i: " + i + " counter: " + counter);
return true;
} else if(i <= 0 && counter == 50) {
System.out.println("2nd if: i: " + i + " counter: " + counter);
return false;
} else {
greaterthanfifty(i - 1, counter + 1);
System.out.println("i: " + i + " counter: " + counter);
return false;
}
}

试试这个:

public static boolean greaterthanfifty(int i, int counter) {
if(i > 0 && counter == 50) {
System.out.println("First if: i: " + i + " counter: " + counter);
return true;
} else if(i <= 0 && counter == 50) {
System.out.println("2nd if: i: " + i + " counter: " + counter);
return false;
} else {
System.out.println("i: " + i + " counter: " + counter);
return greaterthanfifty(i - 1, counter + 1);;
}
}

因为:

else {

greaterthanfifty(i - 1, counter + 1);
System.out.println("i: " + i + " counter: " + counter);
return false;
}

在这里,你无论如何都会返回false。

最新更新