求幂pow()

pow(x, n)  求x的n次方。

 

最简单的方法便是计算n个x相乘

    public static double pow(double x, int n) {

        if (n == 0) return 1;
        else if (n > 0) return x*pow(x, n-1);
        else return pow(x, n+1)/x;
    }

该方法计算量较大,如pow(3, 1024)则需要1024次相乘运算。

可以将其简化为pow(9, 512),运算次数减小一半,一直简化

    public static double myPow(double x, int n) {

        if (n==0) return 1;
        if (n % 2 == 0) return myPow(x*x, n/2);
        else if (n>0) return myPow(x, n-1)*x;
        else return myPow(x, n+1)/x;
    }

 

posted on 2018-04-10 20:12  Deltadeblog  阅读(147)  评论(0编辑  收藏  举报

导航