我想要使用递归函数递增数字的问题。该函数没有像我期望的那样返回值。在调试时,我看到数字增加但是当返回值时,似乎对数字的调整以相反的顺序返回。
这是一个简单的例子:
private static int recursionTest(int num){
if (num < 10){
recursionTest(++num);
}
return num;
}
public static void main(String[] args) {
System.out.println(recursionTest(1));
}
输出始终为2.当我使用逐步调试器时,我看到以下内容:
为什么值最终会减少,如何返回最初计算的值?
答案 0 :(得分:11)
应该是这样的:
private static int recursionTest(int num){
if (num < 10){
return recursionTest(++num);
}
else
return num;
}
答案 1 :(得分:2)
这是因为您仍然返回num
而不是递归函数的结果。
private static int recursionTest(int num){
if (num < 10){
return recursionTest(++num);
}
return num;
}
答案 2 :(得分:2)
尝试使用:
num = recursionTest(++num);
答案 3 :(得分:1)
您的问题是您必须返回递归调用,而不是数字。如果这样做,您将始终获得初始值+ 1。
解决方案:
private static int recursionTest(int num){
if(num < 10){
return recursionTest(num + 1);
}
return num;
}
答案 4 :(得分:0)
试试这个,明确使用结束条件:
int recursionTest(int num) {
if(num == 10){ //recursion exit condition
return num;
}
return recursionTest(++num);
}
答案 5 :(得分:-2)
private static int recursionTest(int num){
while(num < 10){
recursionTest(++num);
if(num < 10){
break;
}
}
return num;
}
上面的代码片段将循环迭代10次,因此它会很快。