求数值的整数次方(思路和实现)

KLQ 2020-05-08 10:35:47 java常见问答 4802

下面要给大家分享的实例是和求数值的整数次方有关的内容,一起来看看具体的思路和实现方式吧。

题目:

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

求base的exponent次方。

保证base和exponent不同时为0。

思路1:

快速幂

代码实现:

public double Power(double base, int exponent) {
        if (exponent == 0) {
            return 1.0;
        }
        if (base - 0.0 == 0.00001 || base - 0.0 == -0.00001)  {
            if (exponent < 0) {
                throw new RuntimeException("除0异常"); 
            }else{
                return 0.0;
            }
        }
        int e = exponent > 0 ? exponent: -exponent;
        double res = 1;
        while (e != 0) {
            res = (e & 1) != 0 ? res * base : res;
            base *= base;
            e = e >> 1;
        }
        return exponent > 0 ? res : 1/res;
  }

思路2:

递归

代码实现:

public double Power(double base, int exponent) {
        if (exponent == 0) {
            return 1.0;
        }
        if (base - 0.0 == 0.00001 || base - 0.0 == -0.00001)  {
            if (exponent < 0) {
                throw new RuntimeException("除0异常"); 
            }else{
                return 0.0;
            }
        }
        return exponent > 0 ? getPower(base, exponent) : 1/getPower(base, -exponent);
    }
     
    public static double getPower(double base, int e) {
        if (e == 1) {
            return base;
        }
        double halfPower = getPower(base, e >> 1);
        return (e & 1) != 0 ? base * halfPower * halfPower : halfPower * halfPower;
    }

思路3

代码实现:

public class Solution {
    public double Power(double base, int exponent) {
        return Math.pow(base, exponent);
  } 
}

以上就是今天的实例分享了,继续关注奇Q工具网的java实例栏目,更多的精彩内容可以带给大家哦。

推荐阅读:

调整数组顺序使奇数位于偶数前面(思路和实现)

Java找出n个整数中最小的K个数实现及思路

数组统计数字出现次数代码实现和思路