[leedcode 50] Pow(x, n)

public class Solution {
    public double myPow(double x, int n) {
        //利用二分法,通过递归加速计算
        //注意:1.判断n是否为负
        // 2.递归结束条件,n==1和n==0
        // 3.n的奇偶不同处理方式
        
        if(n<0)
           return 1/pow(x,-n);
        else
           return pow(x,n);
    }
    public double pow(double x,int n){
        if(n==0) return 1;
        if(n==1) return x;
        double temp=pow(x,n/2);
        if(n%2==0){
            return temp*temp;
        }else{
            return temp*temp*x;
        }
    }
}

 

你可能感兴趣的:(code)