实现x^n Pow(x, n)

问题:java

Implement pow(xn).spa

解决:递归

① 调用java API。io

class Solution { //28ms
    public double myPow(double x, int n) {
        return Math.pow(x,n);
    }
}class

 pow(x,n)就是求x的n次方。x的n次方能够看作:x^n = x^(n/2)*x^(n/2)*x^(n%2)。因此利用递归求解,当n==1的时候,x^n=x。效率

固然n是能够小于0的,2^(-3) = 1/(2^3)。按照上面那个规律就能够解决了。方法

class Solution { // 22ms
    public double myPow(double x, int n) {
        if(n < 0) return 1 / x * myPow(1 / x, - (n + 1));
        if(n == 0) return 1;
        if(n == 2) return x * x;
        if(n % 2 == 0) return myPow( myPow(x, n/2), 2);
        else return x * myPow(myPow(x, n/2), 2);
    }
}co

③  单独写一个方法效率更高return

class Solution {//19ms     public double myPow(double x, int n) {        if (n < 0) {             return 1 / powerHelper(x, -n);         } else {             return powerHelper(x, n);         }     }     private double powerHelper(double x, int n) {         if (n == 0) return 1;         if (n == 1) return x;         double temp = powerHelper(x, n/2);         if (n % 2 == 0) {             return temp * temp;         } else {             return temp * temp * x;         }     } }

相关文章
相关标签/搜索