[leetcode] Pow(x,n)

来源:互联网 发布:抓包数据分析 编辑:程序博客网 时间:2024/05/18 09:13

Implement pow(xn).

Show Tags
这是一道模拟题。如果直接使用线性的乘法操作会超时。
使用二分法,将原始的N次方操作转换为更小的N/2次方操作,如此往复,知道N为0为止。经过上面的操作之后结果就直接转换为LOG(N)的负责度了。
class Pow{public:    double powOut(double x,int n)    {        int t = n>=0?n:-n;        return n>=0?pow2(x,t):(1.0/pow2(x,t));    }    double pow2(double x,int n)    {        if(x==1.00000)            return x;        if(n==0)            return 1.0;        //int t = n<0?-n:n;        double half = pow2(x,n/2);        if(n%2==0)            return half*half;        return half*half*x;    }};


0 0