实现函数 double Power(double base, int exponent),求base的exponent次方
注意:
- 保证base和exponent不同时为0
- 不得使用库函数,同时不需要考虑大数问题
- 有特殊判题,不用考虑小数点后面0的位数
进阶:空间复杂度 O(1),时间复杂度 O(n)
- 输入:2.00000,3
- 返回值:8.00000
边界
- 指数为0的情况,不管底数是多少都应该是1
- 指数为负数的情况,求出的应该是其倒数幂的倒数
- 指数为负数的情况下,底数不能为0
func Power(base float64, exp int) float64 {
if exp == 0 {
return 1
}
if exp < 0 && base == 0 {
return -1
}
if exp < 0 {
base = 1 / base
exp = -exp
}
res := 1.0
for exp != 0 {
if exp&1 == 1 {
res *= base
}
base *= base
exp >>= 1
}
return res
}