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))

终端:

$ scala ch2ex10.scala 
/scala/impatient/ch2ex10.scala:5: error: type mismatch;
 found   : Unit
 required: Double
  else if (n < 0) 1 / power(x, -n)

这是Unit从哪里来的?

谢谢!

4

1 回答 1

4

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

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

 else 1 / power(x, -n)

如果另一种可能性是开放的,你需要写

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

并填写点。否则编译器假定

 else {}

为你。

于 2012-06-23T01:30:37.120 回答