边界检查:0,INT_MAX, INT_MIN
class Solution {
private:
map<int, double> memory;
public:
double myPow(double x, int n) {
if(n == 0)
return 1.0;
if(n == 1)
return x;
if(n == -1)
return 1/x;
if(memory.count(n)>0)
return memory[n];
double result = myPow(x, n/2) * myPow(x, n/2);
if(n%2 != 0){
result *= (n<0)? 1/x : x;
}
memory[n] = result;
return result;
}
};