题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解决方法
class Solution {
public:
double Power(double base, int exponent) {
//方法1:O(logn)
/*if(exponent==0) return 1;
if(exponent==1) return base;
if(exponent<0) return 1/Power(base,0-exponent);
double res=Power(base,exponent>>1);
res*=res;
if(exponent&1)
res*=base;
return res;*/
//方法2:快速幂算法,时间O(logn)
int x=(exponent>0)?exponent:(0-exponent);
double res=1.0;
while(x){
if(x&1) res*=base;
base*=base;
x=x>>1;
}
return exponent>0?res:1/res;
}
};