leetcode 50. Pow(x, n)
递归
func myPow(x float64, n int) float64 {
if n < 0 {
if x == 0.0 {
return 0.0
}
return 1 / myPow(x, -n)
}
if n == 0 {
return 1
}
r := myPow(x, n/2)
if n%2 == 1 {
return x * r * r
}
return r * r
}
位运算
func myPow(x float64, n int) float64 {
if n == 0 {
return 1
}
m, res, tmp := n, 1.0, x
if n < 0 {
n = -n
}
for n != 0 {
if n&1 == 1 {
res *= tmp
}
n >>= 1
tmp *= tmp
}
if m < 0 {
return 1 / res
}
return res
}