数值的整数次方
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
快速幂
根据下面推导,递归求解。
- 如果b为0,ab = 1
- 如果b为偶数 ab = ab/2 * ab/2
- 如果b为奇数 ab = ab/2 * ab/2 * a
时间复杂度O(logn)。
class Solution {
public:
double Power(double base, int exponent) {
int cnt = abs(exponent);
double ans;
if (cnt == 0)
{
return 1;
}
if (cnt % 2 == 0)
{
double temp = Power(base, cnt/2);
ans = temp * temp;
}
else
{
double temp = Power(base, cnt/2);
ans = temp * temp * base;
}
// 处理正负号
return exponent > 0 ? ans : 1 / ans;
}
};c