您的位置:首页 > 其它

数值的整数次方

2018-01-02 11:48 169 查看
题目:实现函数double Power(double base,int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题

思路:

我们可以从base和exponent的取值来考虑所有的情况,底数和指数都可以分别取正数、负数、0。

当底数为正数的时候,指数为正数可以直接计算、指数为负数的计算结果是指数为正数的倒数、指数为你0结果为1。

当底数为负数的时候,指数为正数可以直接计算、指数为负数的计算结果是指数为正数的倒数、指数为你0结果为1。

当底数为0的时候,指数为正数时结果都是0。指数为负数的时候,因为结果是对应正数的倒数,分母不能为0,所以没有意义。指数为0的时候,0的0次方在数学上是没有意义的。

代码如下:

bool g_InvalidIput=false;
double Power(double base,double exponent)
{
g_InvalidIput=false;
if(equal(base,0.0) && exponent<0)
{

g_InvalidIput=true;
return 0.0;
}
unsigned int absexponent=(unsigned int )exponent;

if(exponent<0)
absexponent=unsigned int (-exponent);
if(exponent<0)
{
double result=powerresult(base,exponent);
result=1.0/result
}
return result;

}

bool equal(double a,double b)
{
if((a-b>-0.0000001)&&(a-b<0.0000001))
return true;
else
return false;
}

double powerresult(double base,double exponent)
{
double result=1.0;
for(int i=1;i<=exponent;i++)
{
result=result*base;
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: