您的位置:首页 > 其它

剑指_16数值的整数次方

2017-12-03 16:38 405 查看
public class Solution {
public double Power(double base, int exponent) {
double result=0.0;
if(equal(base,0.0)&&exponent<0){
throw new Exception("0的负数次幂无意义");
}
if(equal(exponent,0)){
return 1.0;
}
if (exponent<0){
result=1.0/PowerCore(base,-exponent);
}else{
result=PowerCore(base,exponent);
}
return result;
}
//判断两个double型数据是否相等
private boolean equal(double num1,double num2){
if(((num1-num2)>-0.0000001)&&((num1-num2)<0.0000001)){
return true;
}else{
return false;
}
}
//采用递归的方法求次幂
public double PowerCore(double base,int exponent){
if(exponent==0){
return 1.0;
}
if(exponent==1){
return base;
}
double result=PowerCore(base,exponent>>1);//右移一位表示除2
result*=result;
if((exponent&0x1)==1){//与1按位与判断是否是奇数,0x1表示是十六位进制中的1
result*=base;
}
return result;
}
}

http://blog.csdn.net/jsqfengbao/article/details/47164537
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: