递归方法问题("缺少return语句")

时间:2015-04-05 21:31:35

标签: recursion

所以我有一个程序运行一堆不同的递归方法,我无法编译/运行它。根据我的计算机,错误在于此方法:

public static int fibo(int n)
    // returns the nth Fibonacci number
    {
     if (n==0)
     {
      return 0;
     }
     else if (n==1)
     {
       return 1;
     }

     else if (n>1)
     {
      return fibo(n-1) + fibo(n-2);
     }


    }

我在main方法中正确调用了这个方法,所以问题出现在这段代码中。

2 个答案:

答案 0 :(得分:1)

确保所有可能的路径都有return语句。在您的代码中,如果n< 0,没有return语句,编译器识别出这个,并抛出错误。

public static int fibo(int n)
    // returns the nth Fibonacci number
    {
     if (n<=0)
     {
      return 0;
     }
     else if (n==1)
     {
       return 1;
     }
     else // All other cases, i.e. n >= 1
     {
      return fibo(n-1) + fibo(n-2);
     }
    }

答案 1 :(得分:1)

我想我可以帮助你。在return n;之后添加else if。在代码之外但在最后一个花饰之前。

代码将与n ≥ 0 btw一样长;这里的另一张海报是正确的,你可能想要添加一些东西来捕获该错误。