题解 | #数值的整数次方#【按指数情况分类】
数值的整数次方
http://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417554e07c00
思路
此题根据指数的情况来划分即可。
当指数为 0 时,若底数也为 0 ,因 0 的 0 次幂无意义,因此此情况应提示错误信息;
当指数为正数时,将指数个底数相乘返回结果即可;
当指数为负数时,应将底数转为其倒数,并且,若在循环计算时借助指数与当前下标大小作为循环终止条件,则指数应提前转为其相反数。
实现
public class JZ12数值的整数次方 {
public double Power(double base, int exponent) {
if (exponent == 0) {
if (base == 0) {
try {
throw new Exception("0的0次方无意义");
} catch (Exception e) {
e.printStackTrace();
}
}
return 1;
} else if (exponent > 0) { //指数为正数
if (base == 0) {
return 0;
}
} else if (exponent < 0) { //指数为负数
if (base == 0) {
try {
throw new Exception("当指数为负数,底数为0时无意义");
} catch (Exception e) {
e.printStackTrace();
}
}
base = 1 / base;
exponent = -exponent;
}
double result = 1;
for (int i = 0; i < exponent; i++) {
result *= base;
}
return result;
}
public static void main(String[] args) {
JZ12数值的整数次方 s = new JZ12数值的整数次方();
System.out.println("s.Power(2.00000, 3) = " + s.Power(2.00000, 3));
System.out.println("s.Power(2.00000, 0) = " + s.Power(2.00000, 0));
System.out.println("s.Power(2.00000, -2) = " + s.Power(2.00000, -2));
}
} 
