剑指offer面试题11 数值的整数次方 java实现
来源:互联网 发布:联合国维和行动 知乎 编辑:程序博客网 时间:2024/06/03 14:52
解题思路:
这道题看起来很简单,但还是有些地方还要仔细观察才能发现陷阱。
1.当指数大于等于0的时候,底数可以取任意double类型的值,这里暂不考虑0的0次方是1还是0。
2.当指数小于0时:
(1)如果底数为0,则在取倒数的时候会出现分母为0的情况,这是计算机不允许的,这里让函数返回0.0,然而函数返回0.0可能还有另一种情况,即当指数>0,底数为0时,结果也为0.0。因此为了区分这种情况,需要设置一个成员变量invalidInput,用来标记输入是否合法。还有一个地方需要注意,在判断底数是否为0时,由于==不能判断两个小数是否相等,因此只能使用底数与0.0之差的绝对值是不是在一个很小的范围之内,如果是,则认为底数与0.0相等。
(2)如果底数不为0,先求出指数为正数时候的值,在取倒数。
/** * 数值的整数次方 * @author wuxinkai * */public class Solution {boolean invalidInput = false;public double Power(double base, int exponent) {double result = 1.0;if (exponent >= 0) {//如果指数大于等于0,那么底数可以取任意double值result = getPowerWithUnsignedExponent(base, exponent);} else {//如果指数小于0if (Math.abs(base - 0.0) < 0.0000001) {//判断两个小数是否相等,只能用他们之差的绝对值是不是在一个很小的范围内进行判断//如果base的值和0相等,double类型无法equals,因此只能是和0的值小于一定程度//时可以默认为0,而且必须加上绝对值,防止当base是小数时,肯定满足条件//当底数为0指数为负数时,无意义,证明输入有误invalidInput = true;result = 0.0;} else {//当底数不为0的时候,先求出指数为正数时的值double temp = getPowerWithUnsignedExponent(base, -exponent);//取倒数result = 1 / temp;}}return result;}private double getPowerWithUnsignedExponent(double base, int exponent) {double result = 1;for (int i = 1; i <= exponent; i++) {result *= base;}return result;}}
阅读全文
0 0
- 剑指offer面试题11 数值的整数次方的Java代码实现
- 剑指offer--面试题11:数值的整数次方--Java实现
- 剑指Offer:面试题11——数值的整数次方(java实现)
- 剑指Offer面试题11:数值的整数次方 Java实现
- 剑指offer面试题11 数值的整数次方 java实现
- [剑指offer][面试题11]数值的整数次方
- 【剑指offer】面试题11:数值的整数次方
- 剑指offer 面试题11 数值的整数次方
- 剑指Offer:面试题11 数值的整数次方
- 《剑指Offer》面试题11:数值的整数次方
- 【剑指Offer学习】【面试题11 :数值的整数次方】
- 剑指offer-面试题11:数值的整数次方
- 剑指offer之面试题11:数值的整数次方
- 剑指offer----面试题11:数值的整数次方
- 剑指offer之面试题11数值的整数次方
- 剑指Offer--面试题11 数值的整数次方
- 剑指Offer----面试题11:数值的整数次方
- 剑指offer-面试题11:数值的整数次方
- 开始写blog
- Tr A
- 数组中出现的次数超过数组长度的一半的数字
- 吃豆豆--Java小游戏
- 文件操作——File
- 剑指offer面试题11 数值的整数次方 java实现
- 二分图匹配
- Python小记--文件读写简洁方案
- fzu2282 wand 排列组合 错排
- Android开发中嵌套fragment的实现
- HDU 5869 Different GCD Subarray Query
- tensorflow的运行流程与核心关键概念含义介绍
- 666:放苹果 dfs
- Android 自定义View 之转动风车