缺少return语句错误

时间:2013-05-03 04:25:30

标签: java recursion compiler-errors return

我刚开始编写递归方法。我的十权力方法之一是给我一个丢失的返回类型错误。

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;

}

3 个答案:

答案 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.