下面要给大家分享的实例是和求数值的整数次方有关的内容,一起来看看具体的思路和实现方式吧。
题目:
给定一个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实例栏目,更多的精彩内容可以带给大家哦。
推荐阅读: