题解 | #数值的整数次方#【按指数情况分类】
数值的整数次方
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)); } }