/** * 时间复杂度O(n) */ defpow(x: Double, n: Int): Double = { if (n == 0) return1 var res = 1.0 for (i <- 0 until (if (n < 0) n else -n) by -1) { res = res * x } if (n < 0) 1 / res else res }
/** * 快速幂,时间复杂度O(logn) */ defpow2(x: Double, n: Int): Double = { if (n == 0) return1 if (n == 1) return x var res = x var i = 1L while (i * 2 <= Math.abs(n.toLong)) { res = res * res i = i * 2 }