我看我脑子只会最暴力的算法,也不知道这些都学到哪去了,想不出来简单的,但像这种我一猜这么直接乘肯定会超过的就放弃了。
贴一个快速幂的博客:
https://blog.csdn.net/hkdgjqr/article/details/5381028
还是自己看了算法敲会印象深一点
class Solution {
public:
double power(double base,int exponent){
double result=1.00;
if(exponent==1) return base;
while(exponent>0){
if((exponent%2)==1)
result=result*base;
base=base*base;
exponent=exponent/2;
}
return result;
}
double Power(double base, int exponent) {
if(base==0){
if(exponent>=0) return 0;
else
throw invalid_argument("Invalid input");
}
else{
if(exponent>0) return power(base,exponent);
else if(exponent==0) return 1;
else return 1/power(base,-exponent);
}
}
};
n & 1 等价于 (n % 2) == 1
n >>= 1 等价于 n /= 2