Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 奇怪的编译器错误:找到了单位,我试图返回一个双精度_Function_Scala_Recursion - Fatal编程技术网

Function 奇怪的编译器错误:找到了单位,我试图返回一个双精度

Function 奇怪的编译器错误:找到了单位,我试图返回一个双精度,function,scala,recursion,Function,Scala,Recursion,我的代码: def power(x: Double, n: Int): Double = { if (n % 2 == 0 && n > 0) power(power(x, n/2), 2) else if (n % 2 == 1 && n > 0) x * power(x, n - 1) else if (n == 0) 1 else if (n < 0) 1 / power(x, -n) } println(power(2,

我的代码:

def power(x: Double, n: Int): Double = {
  if (n % 2 == 0 && n > 0) power(power(x, n/2), 2)
  else if (n % 2 == 1 && n > 0) x * power(x, n - 1)
  else if (n == 0) 1
  else if (n < 0) 1 / power(x, -n)
}

println(power(2, 2))
def功率(x:Double,n:Int):Double={
如果(n%2==0&&n>0)幂(幂(x,n/2),则为2)
如果(n%2==1&&n>0)x*幂(x,n-1)
如果(n==0)1
否则如果(n<0)1/幂(x,-n)
}
println(电源(2,2))
终端:

$ scala ch2ex10.scala 
/scala/impatient/ch2ex10.scala:5: error: type mismatch;
 found   : Unit
 required: Double
  else if (n < 0) 1 / power(x, -n)
$scala ch2ex10.scala
/scala/ancerte/ch2ex10.scala:5:错误:类型不匹配;
发现:单位
所需:双人
否则如果(n<0)1/幂(x,-n)
这个
装置是从哪里来的

谢谢

它来自块中最后一个“else if”

看起来并不是所有的可能性都用尽了。如果没有其他可能性(这里正好是这种情况),就写下来

 else 1 / power(x, -n)
如果有另一种可能性,你需要写信

 else if (n < 0) 1 / power(x, -n)
 else ...
给你。

它来自块中最后一个“else if”

看起来并不是所有的可能性都用尽了。如果没有其他可能性(这里正好是这种情况),就写下来

 else 1 / power(x, -n)
如果有另一种可能性,你需要写信

 else if (n < 0) 1 / power(x, -n)
 else ...

为您。

我允许自己更改错误消息,在我看来,这似乎过于局限于与错误偶然相关的内容,这可能非常常见,并且发生在完全不同的情况下-与电源功能完全无关。当然,找出错误的原因后,很容易看出这一点。但对于未来的访问者来说,这可能会帮助他们找到解决方案。我允许自己更改错误消息,在我看来,这似乎过于局限于与错误偶然相关的内容,这可能非常常见,并且发生在完全不同的情况下-与电源功能完全无关。当然,找出错误的原因后,很容易看出这一点。但对于未来的访问者来说,这可能会帮助他们找到解决方案。