题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解题思路:
考虑边界值情况:底数,指数分别为正、负、0
底数是0,指数为负
1.底数是0,指数是负->输入无效,错误处理,返回0.0
2.底数是0,指数是0->没有意义,返回0
3.底数是0,指数是正->0
4.底数是1,指数是正、负、0->1
5.底数是正数/负数,指数是正数->
6.底数是正数/负数,指数是负数->先指数取反,再用1除以
7.底数是正数/负数,指数是0->0
bool invaildinput=false;
double Power(double base, int exponent) {
//invaildinput=false;
double dis=1e-6,d=0.0;
if(fabs(base-d)<dis&&exponent<0){
invaildinput=true;
return 0.0;
}
if(fabs(base-d)<dis&&exponent>=0)
return 0.0;
if(fabs(base-d)>dis&&exponent==0)
return 1.0;
double result;
if(exponent>0)
result=compute(base,exponent);
else if(exponent<0){
exponent=(unsigned int)(-exponent);
result=1.0/compute(base,exponent);
}
return result;
}
double compute(double base,int exponent){
double result=base;
for(int i=2;i<=exponent;i++){
result*=base;
}
return result;
}