您的位置:首页 > 其它

手动实现pow(x,n)的功能--20150927

2015-09-28 21:27 549 查看
//题目描述:手动实现pow(x,n)的功能

//思路:考虑指数为正和为负和为0的情况,考虑溢出,考虑double与0的比较。

bool g_InvalidInput = false;//全局变量判断输入的合法性
double power(double base,int expoent){
g_InvalidInput = false;
//底数为0,指数为负时,输入非法
if(equel(base,0)&&exponent<0){
g_InvalidInput = true;
return 0.0;
}
unsigned int absExponent = (unsigned int)(expoent);
if(expoent<0){
absExponent = (unsigned int)(-expoent);
}
double result = PowerWithUnsignedExpoent(base,absExponent);
if(expoent<0){
result = 1.0/result;
}
return result;
}

double PowerWithUnsignedExpoent(double base,int expoent){
if(expoent==0){
return 1;
}
if(expoent==1){
return base;
}
double result = PowerWithUnsignedExpoent(base,expoent>>1);
//expoent%2==1
if(expoent&&0x1==1){
result *= base;
}
return result;
}

bool equal(double num1,double num2){
if((num1-num2>-0.0000001)&&(num1-num2<0.0000001){
return true;
}else{
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  全局变量 power