大致思路:
温习二分快速幂的写法。注意,n有可能为负数!
AC代码:
class Solution {
public:
double pow(double x, int n) {
if(n==0)
return 1;
if(n==1)
return x;
if(n<0) //注意!!
{
n=abs(n);
x = 1/x;
}
//二分快速幂
return erfen_pow(x,n);
}
double erfen_pow(double x,int n)
{
if(n==0)
return 1;
double temp = erfen_pow(x,n/2);
temp *= temp;
if(n%2==1)
temp *= x;
return temp;
}
};