2

我刚开始写递归方法。我的十次方方法之一是给我一个缺少的返回类型错误。

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;

}
4

3 回答 3

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语句中。这样做可以消除混乱

于 2013-05-03T04:27:33.113 回答
1

编译器没有进行范围覆盖测试,因此它不会注意到您的代码涵盖了 int n 的所有可能值,因此不会出现错误。

于 2013-05-03T04:36:07.863 回答
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.

于 2013-05-03T04:29:49.133 回答