class Solution {
public:
double myPowHelper(double x, long n){
if(n==0) return 1;
double y=myPowHelper(x,n/2);
return n&1?y*y*x:y*y;
}
double myPow(double x, int n) {
long n_long=n;//INT_MIN绝对值比INT_MAX大1,取反会溢出
return n_long>0?myPowHelper(x, n_long):1/myPowHelper(x, -n_long);
}
};