[Leetcode] Pow(x, n)

来源:互联网 发布:介绍软件的ppt 编辑:程序博客网 时间:2024/05/21 09:51

问题:实现 pow(xn).

看起来很简单,直接递归实现,考虑n<0情况。

double pow(double x, int n) {    if(n == 0)    return 1.0;        if(n<0)        return 1.0/pow(x, -n);    return x*pow(x, n-1);}
虽然是 O(n)复杂度,但发现还是运行超时。于是寻求快速算法,发现x的2n次方等于x的n次方相乘,这样每步可以减少n次相乘,复杂度变为O(logn)。

double power(double x, int n){     if (n == 0)         return 1;                 double v = power(x, n / 2);                 if (n % 2 == 0)         return v * v;     else         return v * v * x;}    double pow(double x, int n) {     if (n < 0)        return 1.0 / power(x, -n);     else        return power(x, n);       }




0 0