第2天 数值的整数次方
2014-01-16 23:29
302 查看
题目:实现函数ondouble Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
注意:
1. 参数base与exponent的值都有三种情况 正数、0、负数
2. double的精度问题,如果比较介意0.000001的偏差可以使用BigDecimal。
参考资料:
《剑指Offer》面试题11
注意:
1. 参数base与exponent的值都有三种情况 正数、0、负数
2. double的精度问题,如果比较介意0.000001的偏差可以使用BigDecimal。
/** * 面试题11 * * 2014-1-16 */ public class Power { double power(double base, int exponent) { if (equal(base, 0.0) || exponent <= 0) { return 0.0; } else if (exponent == 1) { return base; } double result = getPowerValue(base, exponent >> 1); result *= result; if ((exponent & 0x1) == 1) { // 奇数还需要再乘以base result *= base; } // 负负得正但是负数的N次方依然是负数 if (base < 0 && result > 0) { result = -result; } return result; } double getPowerValue(double base, int exponent) { double result = 1.0; for (int i = 0; i < exponent; i++) { result *= base; } return result; } boolean equal(double num1, double num2) { if (num1 - num2 < 0.0000001 && num1 - num2 > -0.0000001) { return true; } return false; } public static void main(String[] args) { Power power = new Power(); boolean flag = true; flag &= power.equal(power.power(9, 3), 729.0); flag &= power.equal(power.power(3, 0), 0.0); flag &= power.equal(power.power(3, -1), 0.0); flag &= power.equal(power.power(0, 0), 0); flag &= power.equal(power.power(-2.1, 4), -19.4481); flag &= power.equal(power.power(-2.1, 0), 0); flag &= power.equal(power.power(-2.1, -3), 0); System.out.println(flag); } }
参考资料:
《剑指Offer》面试题11
相关文章推荐
- 递归(-)数值的整数次方
- 剑指Offer(第二版)面试题16:数值的整数次方
- 面试题11:数值的整数次方
- 剑指offer 数值的整数次方
- 剑指Offer之数值的整数次方
- 数值的整数次方
- 每日一题(65) - 数值的整数次方
- 《剑指Offer》之“数值的整数次方”
- 数值的整数次方
- 程序员面试题精选100题(44)-数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 牛客网-《剑指offer》-数值的整数次方[快速幂运算]
- 面试题:数值的整数次方
- 题目1514:数值的整数次方
- 面试题11:数值的整数次方
- 数值的整数次方
- c++之数值的整数次方
- 《剑指offer》刷题笔记(代码完整性):数值的整数次方
- 数值的整数次方