您的位置:首页 > 职场人生

剑指offer面试题11:数值的整数次方

2019-08-09 17:53 1006 查看

实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题
1、底数为0,指数为负数的情况,无意义
2、指数为0,返回1
3、指数为负数,返回1.0/base,-exponent
4、指数为整数,base,exponent
5、同时考虑到判断double类型,计算机有误差,需要写一个专门的函数判断double类型数据是否相等
按照上面的条件,使用条件语句一个一个返回就行了

public class Test10 {
public double Power(double base,int exponent){
double result = 0.0;
if(equal(base,0.0) && exponent<0){
throw new RuntimeException("Invalid Input");
}else if (equal(exponent,0)){
return 1;
}else if (exponent<0){
return powWithExponent(1.0/base,-exponent);
}else{
return powWithExponent(base,exponent);
}
}

private double powWithExponent(double v, int i) {
double result = 1.0;
for (int j = 0; j < i; j++) {
result  = result* v;
}
return result;
}
//判断两个double类型数据时,计算机有误差
private boolean equal(double base, double v) {
if (base-v>-0.00000001&&base-v<0.00000001){
return true;
}else {
return false;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: