50. Pow(x, n)

来源:互联网 发布:沈阳办公软件培训班 编辑:程序博客网 时间:2024/04/27 15:14

这道题目是求x的n次方。
可以选择用n个x相乘,复杂度为O(n)(负数的-n个相乘再求倒数)
另外就是采取分治来算
分解为pow(x,n/2)*pow(x,n/2)
最后的复杂度应该为logn+logn即为O(logn)
代码如下:

public double myPow(double x, int n) {         if (n==0) {            return 1;        }        double temp=myPow(x, n/2);        if (n%2==0) {            return temp*temp;        }        else {            if (n>0) {                return temp*temp*x;            }            else {                return temp*temp/x;            }        }    }
0 0
原创粉丝点击