RosettaCodeData/Task/Exponentiation-operator/Scala/exponentiation-operator-2.scala
Ingy döt Net 764da6cbbb CDE
2013-04-10 16:57:12 -07:00

7 lines
255 B
Scala

@tailrec def powI[N](n: N, exponent: Int, acc:Int=1)(implicit num: Integral[N]): N = {
exponent match {
case 0 => acc
case _ if exponent % 2 == 0 => powI(n * n, exponent / 2, acc)
case _ => powI(n, (exponent - 1), acc*n)
}
}