JZ12-数值的整数次方
数值的整数次方
https://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey
class Solution {
public double Power(double base, int exponent) {
if (base == 0) {
return 0.0;
}
if (exponent == 0) {
return 1.0;
}
double temp = base; //2 * 2 = 4 ,下一轮是 4 * 2 不是 4 * 4
for (int i = 0; i < Math.abs(exponent) - 1; i++) {
base = base * temp;
}
if (exponent > 0) {
return base;
} else {
return 1 / base;
}
}
//幂计算
public double Power2(double base, int exponent) {
if (base == 0) {
return 0.0;
}
if (exponent == 1) {
return base;
}
boolean isNegative = false;
if (exponent < 0) {
exponent = -exponent;
isNegative = true;
}
double pow = Power2(base * base, exponent / 2); //如果 2 ^ 4 = 4 ^ 2 = (2 * 2) ^ 2
if (exponent % 2 != 0) { //如果 2 * 3 = (2 * 2) * 2 = 4 * 2
pow = pow * base;
}
return isNegative ? 1 / pow : pow;
}
}
查看1道真题和解析