求幂pow()

时间:2024-01-19 22:22:26

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