Solution:
注意n可能取负值,当n小于一个值N时,直接计算,否则,n/=2
class Solution {
public:
double pow(double x, int n) {
double result=1;
if(n<0)
{
x=1/x;
n=-n;
}
if(n<100000){
for(int i=1;i<=n;i++)
result *=x;
return result;
}
else{
if(n%2==0)
{
double temp=pow(x,n/2);
return temp*temp;
}
else
{
double temp=pow(x,(n-1)/2);
return temp*temp*x;
}
}
}
};