数值的整数次方

原创 2015年07月07日 16:18:43

尴尬解法一:不好的解法

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;
}

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

相关文章推荐

【剑指Offer学习】【面试题11 :数值的整数次方】

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

剑指offer--数值的整数次方

记录来自《剑指offer》上的算法题。题目描述: 实现函数 double Power(double base, int exponent), 求 base的 exponent次方。不得使用库函数,...
  • lc013
  • lc013
  • 2016-12-23 10:51
  • 114

程序员面试题精选100题(44)-数值的整数次方[算法]

题目:实现函数double Power(double base, int exponent),求base的exponent次方。不需要考虑溢出。 分析:这是一道看起来很简单的问题。可能有不少的人在看到...

剑指offer-3-面试题11:数值的整数次方(对错误的处理)

题目 分析 自以为题目简单的解法 全面但不够高效的解法 全面又高效的解法 测试用例代码 本题考点 题目 实现函数 double Power( double base, int expone...

数值的整数次方

题目:实现函数double Power(double base,int exponent),求base的exponent次方,不得使用库函数,同时不考虑大数问题。 思路:例如,我们要求一个数的16次方...

九度 题目1514:数值的整数次方

题目来源:http://ac.jobdu.com/problem.php?pid=1514

数值的整数次方

题目:实现函数double Power(double base, int exponent),求base的exponent次方。不需要考虑溢出。 分析:这是一道看起来很简单的问题。可能有不少的人...

九度oj1514:数值的整数次方

题目链接:http://ac.jobdu.com/problem.php?pid=1514 分析:q

剑指offer面试题11 数值的整数次方的Java代码实现

数值的整数次方的Java代码实现 剑指offer这本书不错。以下是我对这道题的Java代码实现 /** * 剑指offer中面试题11:数值的整数次方double power(double b...

剑指Offer----面试题11:数值的整数次方

题目: 实现double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 方法一: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)