您的位置:首页 > 编程语言 > C语言/C++

数值的整数次方

2015-05-10 19:22 169 查看
题目:

实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大多数问题。

此题咋看非常easy,但是却很容易忽视底数为0以及指数为负数的情况,完整代码如下:

//全局变量,当参数出错时返回true
bool g_InvalidInput=false;

//判断两个double型变量是否相等
bool isEqual(double n1, double n2)
{
if ((n1-n2>-0.000001)&&(n1-n2<0.000001))
{
return true;
}
else
{
return false;
}
}

//base的exponent次方,此函数的前提是base不为0,并且exponet不为负数
double unsignedPower(double base, int exponent)
{
double res=1;
while(exponent--)
{
res*=base;
}
return res;
}

//完整的求base的exponent次方函数
double Power(double base, int exponent)
{
g_InvalidInput=false;
if (isEqual(base,0.0)&&exponent<0)
{
g_InvalidInput=true;
return 0.0;
}
unsigned int absExponent=(unsigned int)exponent;
if (exponent<0)
{
absExponent=(unsigned int)(-exponent);
}
double result=unsignedPower(base,absExponent);
if (exponent<0)
{
result=1.0/result;
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 刷题