2015-04-05 75 views
1

所以我有一个运行一堆不同的递归方法的程序,并且我无法将它编译/运行。该错误是在此方法中,根据我的电脑:递归方法问题(“缺少return语句”)

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); 
    } 


    } 

我有这个方法在我的主要方法正确调用,所以这个问题是该位的代码。

+0

那么,如果'n <0'会发生什么?该方法不会返回任何东西,因此错误(我认为)。 – 2015-04-05 21:33:16

回答

1

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

该代码将工作长达n ≥ 0 btw;另一张海报是正确的,你可能想添加一些东西来捕捉错误。

+1

这固定它,它现在编译和运行完美。谢谢! – 2015-04-05 21:49:34

+0

我很高兴得到了帮助。 – Lib101 2015-04-05 21:55:33

1

确保所有可能的路径都有返回语句。在你的代码中,如果没有返回语句,编译器会识别它并抛出错误。

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); 
    } 
    }