数值的整数次方_12

2021-12-23 18:06:44 浏览数 (1)

题目描述

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

ps:保证base和exponent不同时为0

思路

看到这题目,心里一个?,直接一行代码上去了

代码语言:javascript复制
public double Power(double base, int exponent) {
            return Math.pow(base,exponent);
    }

哈哈哈,冷静下来感觉不能这么莽,这不快速幂嘛

下面这块代码考虑了分子为负数以及分子分母同为0的情况; 关于与运算和位运算的使用可以参考下面的链接

代码语言:javascript复制
 public double Power(double base, int exponent) {
        double res=1;
        boolean negative=false;
        if (exponent==0){
            if (base==0){
                throw new RuntimeException("分母不能为0");
            }
        }else if (exponent<0){
            negative=true;
            exponent*=-1;
        }


        while (exponent>0){
            if ((exponent&1)==1){
                res*=base;
            }
            base*=base;
            exponent>>=1;
        }
        return negative?1/res:res;
    }

关于快速幂可以参考https://blog.csdn.net/qq_19782019/article/details/85621386,非常详细,一步步优化真棒

0 人点赞