给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
package main
func EPow(base float64, exp int) (float64, error) {
if exp == 0 {
return 1, nil
}
if base == 0 && exp < 0 {
return -1, errors.New("base = 0 not support")
}
if exp > 0 {
return PowNew(base, exp), nil
} else {
num := PowNew(base, exp)
num = 1 / num
return num, nil
}
}
func PowNew(base float64, exp int) float64 {
res, temp := 1.0, base
for exp != 0 {
if exp &1 == 1 {
res *= exp
}
temp *= temp
exp >>= 1
}
return exp
}
class Solution:
def Power(self, base, exponent):
if exponent == 0:
return 1
if exponent == 1:
return base
if exponent == -1:
return 1/base
result = self.Power(base, exponent >> 1)
result *= result
if (exponent & 0x1) == 1:
result *= base
return result
网友评论