我想使用递归方法但是无法使其正常工作。
在这个程序中,例如,当我显示b
时,为什么值为0而不是10?
public static void main(String[] args) {
int a = 0;
int b = recursivMethod(a);
System.out.println(b);
}
static int recursivMethod(int a)
{
if(a != 10)
recursivMethod(a+1);
return a;
}
答案 0 :(得分:5)
问题是,当你以递归方式调用方法时,你不是返回那个值。也就是说,您正确调用recursivMethod
,但随后立即返回a
的初始值。试试这个:
public static void main(String[] args) {
int a = 0;
int b = recursivMethod(a);
System.out.println(b);
}
static int recursivMethod(int a)
{
if(a != 10)
return recursivMethod(a+1); //here, you return the result of your recursive call
return a; //instead of just immediately returning a, which should only be done only after a == 10
}
答案 1 :(得分:2)
两点:
当您的方法以递归方式调用自身时,它会忽略返回的值:
if(a != 10)
recursivMethod(a+1); // <--- did you mean to do something with the result?
由于recursivMethod()
未更改a
,并且最后返回a
,因此调用recursivMethod(0)
将返回0
。这正是您运行代码时发生的情况。
答案 2 :(得分:1)
这是因为您忽略了递归调用的返回值:
static int recursivMethod(int a) {
if(a != 10)
return recursivMethod(a+1);
return a;
}
答案 3 :(得分:1)
试
return recursiveMethod(a+1);
代替
答案 4 :(得分:1)
您从未为方法局部变量a
分配新值
尝试:
public static void main(String[] args) {
int a = 0;
int b = recursivMethod(a);
System.out.println(b);
}
static int recursivMethod(int a)
{
if(a != 10)
a = recursivMethod(a+1);
return a;
}
答案 5 :(得分:1)
您正在放弃递归通话的结果。
static int recursivMethod(int a)
{
if(a != 10)
return recursivMethod(a+1); // Note the return
return a;
}
答案 6 :(得分:0)
static int recursivMethod(int a)
{
if(a != 10)
return recursivMethod(a+1);
}
答案 7 :(得分:0)
缺少回报:
return recursivMethod(a+1);