Pow(x,n)

x的N次方可以看做:x^n = x(n/2)*x(n/2)*x(n%2)。利用递归求解,当n==1的时候,xn=x。
不要试图顺序理解递归。

    public double myPow(double x, int n) {
        if (n == 0) return 1;
        //half的每个值对应一个return。如果没有return,就会一直卡住。不能正向理解。
        double half = myPow(x, n / 2);
        if (n % 2 == 0) {
            return half * half;
        }
        if (n % 2 == 1) {
            return half * half * x;
        } else {
            return half * half / x;
        }
    }

你可能感兴趣的:(Pow(x,n))