递归方法没有给出正确的值



我想使用递归方法,但很难使其正常工作。

例如,在这个程序中,为什么当我显示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;
}

问题是,当递归调用方法时,不会返回该值。也就是说,您正确地调用了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. 当你的方法递归地调用自己时,它会忽略返回的值:

    if(a != 10)
       recursivMethod(a+1); // <--- did you mean to do something with the result?
    
  2. 由于recursivMethod()不改变a,并且在最后返回a,因此调用recursivMethod(0)将返回0。这正是运行代码时发生的情况。

这是因为您忽略了递归调用的返回值:

static int recursivMethod(int a) {
    if(a != 10)
        return recursivMethod(a+1);
    return a;
}

尝试

return recursiveMethod(a+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;
}

您正在丢弃递归调用的结果。

static int recursivMethod(int a)
{
    if(a != 10)
        return recursivMethod(a+1); // Note the return
    return a;
}
static int recursivMethod(int a)
{
if(a != 10)
    return recursivMethod(a+1);

}

缺少返回:

return recursivMethod(a+1);

相关内容

  • 没有找到相关文章

最新更新