题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
思路
对于正数$exponent$,直接用快速幂在$log(exponent)$复杂度内求解,对于负数$exponent$,将其变成整数,将$base$变为$1.0/base$
class Solution {
public:
double Power(double base, int exponent) {
double ans=1.0;
if(exponent<0){
base=1.0/base;
exponent=-exponent;
}
while(exponent){
if(exponent&1)ans*=base;
base=base*base;
exponent>>=1;
}
return ans;
}
};