class Solution {
public:
double myPow(double x, int n) {
double result=1;
int flag=0;
if(n==0||x==1) return 1;
if(x==-1&&n%2==0) return 1;
if(x==-1&&n%2==1) return -1;
if(n<0) n=-n,flag=1;
return flag==0?pow(x,n):1/pow(x,n);
}
double pow(double x,int n){
if(n==1) return x;
double result= pow(x,n/2);
return n%2==0?result*result:result*result*x;
}
};
public:
double myPow(double x, int n) {
double result=1;
int flag=0;
if(n==0||x==1) return 1;
if(x==-1&&n%2==0) return 1;
if(x==-1&&n%2==1) return -1;
if(n<0) n=-n,flag=1;
return flag==0?pow(x,n):1/pow(x,n);
}
double pow(double x,int n){
if(n==1) return x;
double result= pow(x,n/2);
return n%2==0?result*result:result*result*x;
}
};