边界检查: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; } };