Java 返回类型double在Eclipse中不使用递归函数?

Java 返回类型double在Eclipse中不使用递归函数?,java,eclipse,Java,Eclipse,出于某种原因,我得到了一个错误:“该方法必须返回类型为double的结果” 这显然有一个返回类型double,但我在编译之前和代码中收到一条错误消息。它会抱怨,因为当n小于0时,没有返回值。如果(n==0)返回(double)1;否则如果(n>0)返回d*power0(d,n-1);否则返回(双)-1;如果n为-5,该方法将返回什么?您知道,一些错误消息也会返回readable@MarkusKull我可以理解为什么这个错误消息会让经验较少的程序员感到困惑。该方法确实返回类型为double的结果(

出于某种原因,我得到了一个错误:“该方法必须返回类型为double的结果”


这显然有一个返回类型double,但我在编译之前和代码中收到一条错误消息。

它会抱怨,因为当n小于0时,没有返回值。

如果(n==0)返回(double)1;否则如果(n>0)返回d*power0(d,n-1);否则返回(双)-1;如果n为-5,该方法将返回什么?您知道,一些错误消息也会返回readable@MarkusKull我可以理解为什么这个错误消息会让经验较少的程序员感到困惑。该方法确实返回类型为double的结果(在两个位置)——但并不是在所有可能的路径上都这样做。谢谢。我不确定我是否曾在其他编辑中看到过这一点。我知道这是一个范围问题,但它是否内置在Eclipse中,而其他编译器却没有?谢谢。我不确定我是否曾在其他编辑中看到过这一点。我知道这是一个范围问题,但这是内置在Eclipse中的吗?其他编译器不是这样吗?@user4849361每个Java编译器都会给你同样的错误。仍然缺少一个return语句…好的,但是为什么它需要覆盖每个值范围(如果n<0,则在这里)?如果我有意这样做,以便以某种方式处理异常,该怎么办?我总是需要在第三个返回语句中处理异常?您有这样的代码
if(a)。。。else if(b)…
因此编译器知道存在与
a
b
不同的条件,您没有为其指定返回值。您可以抛出异常,而不是返回statemet。
public static double power0(double d, int n)
{
   if (n == 0)
        return 1;
    else if (n > 0)
        return d * power0(d, n - 1);
}