Leecode刷题之求幂

110 阅读1分钟

\

Pow(x, n)

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。

示例 1:

输入:x = 2.00000, n = 10 输出:1024.00000 示例 2:

输入:x = 2.10000, n = 3 输出:9.26100 示例 3:

输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25

题解1:非递归的形式,需要将大数据分割为一半

private double myPow2(double x, int n) {
   double result = 1.0;
   int count = Math.abs(n);
   for(int i = count;i!=0; i = i/2 ){
       if(i%2 != 0){
           result *=x;
       }
       x *=x;
   }
​
   return (n<0)?1/result:result;
​
}

题解2:非递归的形式,需要将大数据分割为一半

private double myPow(double x, int n) {
​
    if(x == 0){
        return 0;
    }
​
    if(n== 0){
        return  1;
    }
​
    if(n == 1){
        return x;
    }
​
    if(n == -1){
        return 1/x;
    }
​
​
    double half = myPow(x,n/2);
    double rem = myPow(x,n%2);
​
    return half*half*rem;
}