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

これは、ブロック内の最後の「elseif」から取得されます。

すべての可能性が尽きたようには見えません。他に可能性が残っていない場合(ここではたまたまそうです)、次のように書いてください。

 else 1 / power(x, -n)

別の可能性が開かれる場合は、次のように書く必要があります

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

ドットを埋めます。それ以外の場合、コンパイラは想定します

 else {}

あなたのために。

于 2012-06-23T01:30:37.120 に答える