题目链接

牛客网

题目描述

给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent,求 base 的 exponent 次方

解题思路

非递归

class Solution {
   
    public double myPow(double x, int n) {
   
        long N = n; // 防止n在int最小值转正时溢出
        if (N<0) {
   
            x = 1/x;
            N = -N;
        }
        double res = 1;
        while (N!=0) {
   
            if (N%2 == 1)
                res *= x;
            x*=x;
            N=N>>1;
        }
        return res;
    }
}

递归

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