LeetCode-Pow(x, n) -指数-递归

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;
    }
};

 

posted @ 2014-10-19 02:19  zombies  阅读(142)  评论(0编辑  收藏  举报