所以我有一个程序运行一堆不同的递归方法,我无法编译/运行它。根据我的计算机,错误在于此方法:
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方法中正确调用了这个方法,所以问题出现在这段代码中。
答案 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一样长;这里的另一张海报是正确的,你可能想要添加一些东西来捕获该错误。