Pow(x,n)

作者: DrunkPian0 | 来源:发表于2017-03-07 23:15 被阅读11次

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)

    本文链接:https://www.haomeiwen.com/subject/esmvgttx.html