剑指Offer-数值的整数次方

数值的整数次方

题目

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

思路

判断好各种场景,一次AC

代码

public class Power {
    public double Power(double base, int exponent) {
        if (base==0&&exponent==0){
            return 0;
        }

        if (exponent==0){
            return 1;
        }

        int exp = exponent;
        if (exp<0){
            exp = -exp;
        }

        double result;
        result = resultPower(base,exponent);
        if (exponent<0){
            result = 1/result;//负数就是倒数
        }

        return result;
    }

    public static double resultPower(double base,int exponent){
        if (exponent==0){
            return 1;
        }

        double result = resultPower(base,exponent>>1);//精巧些递归
        result*=result;
        if (exponent%2==1){
            result *= base;//奇数的话要再乘一次
        }
        return result;
    }
}
0%