题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
/**
* a^n ={a^(n/2) * a^(n/2),n为偶数;a^(n/2) * a^(n/2) * a}
*
* @param base
* @param exponent
* @return
*/
public double Power(double base, int exponent) {
if (exponent == 0) {
return 1;
}
double res = power(base, Math.abs(exponent));
return exponent < 0 ? 1.0 / res : res;
}
public double power(double base, int exponent) {
if (exponent == 0) {
return 1;
}
if (exponent == 1) {
return base;
}
double res = power(base, exponent >> 1);
res *= res;
if ((exponent & 1) == 1) {//判断exponent是奇数还是偶数
res *= base;
}
return res;
}
本文介绍了一种快速计算浮点数的整数次幂的方法。通过递归分解指数为更小的幂运算,实现了高效的指数计算。该算法适用于任何需要进行大量幂运算的应用场景。
666

被折叠的 条评论
为什么被折叠?



