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

时间:2012-02-06 17:30:57

标签: java recursive-query

我想使用递归方法但是无法使其正常工作。

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

8 个答案:

答案 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)

两点:

  1. 当您的方法以递归方式调用自身时,它会忽略返回的值:

    if(a != 10)
       recursivMethod(a+1); // <--- did you mean to do something with the result?
    
  2. 由于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);