我刚开始编写递归方法。我的十权力方法之一是给我一个丢失的返回类型错误。
public static double powerOfTen(int n)
{
if (n == 0)
return 1;
if(n > 0)
return (10 * powerOfTen(n - 1));
if(n < 0)
return (1 / powerOfTen(n - 1));
}
我很新,所以任何解释都会受到赞赏。
////// 编辑 这对我来说是十分消极和积极的力量。谢谢你的帮助:D
public static double powerOfTen(int n)
{
if(n > 0)
return (10 * powerOfTen(n - 1));
if(n < 0)
return (1 / powerOfTen( (-1)*(n) ));
return 1;
}
答案 0 :(得分:3)
尝试:
public static double powerOfTen(int n)
{
if(n > 0)
return (10 * powerOfTen(n - 1));
if(n < 0)
return (1 / powerOfTen(n - 1));
return 1;
}
编译器认为它无法保证始终返回一个值,因为所有返回都在if
语句中。这样做可以消除混乱
答案 1 :(得分:1)
编译器没有进行范围覆盖测试,因此它没有注意到你的代码涵盖了int n的所有可能值,从而错误。
答案 2 :(得分:0)
请更改您的代码:
重点很明确:如果该声明为false
,我不希望功能继续,所以我错过了return
。
public static double powerOfTen(int n)
{
if(n>1){ //check for positive n value
if(n > 0){
return (10 * powerOfTen(n - 1));
}else if(n < 0){
return (1 / powerOfTen(n - 1));
}
}
return something; //here error
}
作为最佳做法的附注,请在{ }
if else statements.