https://oj.leetcode.com/problems/powx-n/
其实是很简单的递归就能解。每次将其降低到n/2即可。需要注意各种边界条件,包括n为最小的负数的情况。
class Solution { public: double pow(double x, int n) { if(n==0) return 1; if(n<0) { if (n==numeric_limits<int>::min()){ return pow(x,n+1)/x; } else return 1.0f/pow(x,-n); } double half=pow(x,n/2); double pr=1; if (n%2==1) pr=x; return pr*half*half; } };