码迷,mamicode.com
首页 > 其他好文 > 详细

数值的整数次方

时间:2015-07-07 19:39:28      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

技术分享解法一:不好的解法

double Power(double base,int exponent)

{

       double result=1.0;

        for(int i=1;i<=exponent;++i)

              result*=base;

        return result;

}

解法一没有考虑指数为0和负数的情况,只考虑了指数为正数的情况。

技术分享解法二:全面但不高效的解法

bool q_InvalidInput = false;
double Power(double base, int exponent)
{
g_InvalidInput = false;
if (equal(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 = PowerWithUnsignedExponent(base,absExponent);
if (exponent < 0)
result = 1.0 / result;
return result;
}
double PowerWithUnsignedExponent(double base, unsigned int exponent)
{
double result = 1.0;
for (int i = 1; i <= exponent; ++i)
result *= base;
return result;
}
bool equal(double num1, double num2)
{
if ((num1 - num2 > -0.0000001) && (num1 - num2) < 0.0000001))
return true;
else
return false;
}

技术分享解法三:全面又高效的解法
       使用公式求a的n次方:技术分享
将解法二的double PowerWithUnsignedExponent函数修改为:

double PowerWithUnsignedExponent(double base, unsigned int exponent)
{
if (exponent == 0)
return 1;
if (exponent == 1)
return base;
double result = PowerWithUnsignedExponent(base, exponent >> 1);
result *= result;
if (exponent & 0x1 == 1)
result *= base;
return result;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

数值的整数次方

标签:

原文地址:http://blog.csdn.net/wangfengfan1/article/details/46790979

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!