数值的整数次方

原创 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(Java版):数值的整数次方

题目:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题 1、自以为很简单的解法: 由于不需...
  • jsqfengbao
  • jsqfengbao
  • 2015年07月31日 08:43
  • 1769

1514:数值的整数次方 @jobdu

题目1514:数值的整数次方 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:377 解决:103 题目描述: 给定一个doubl...
  • hellobinfeng
  • hellobinfeng
  • 2013年12月17日 02:06
  • 1360

【剑指offer】数值的整数次方

剑指offer上的第十一题,九度OJ上测试通过。 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 输入: 输入可能包含多个测...
  • mmc_maodun
  • mmc_maodun
  • 2014年05月11日 09:27
  • 2767

剑指Offer(第二版)面试题16:数值的整数次方

剑指Offer(第二版)面试题16:数值的整数次方
  • qq_25827845
  • qq_25827845
  • 2017年06月17日 10:30
  • 1228

【面试题十一】数值的整数次方

数值的整数次方
  • zling_1989
  • zling_1989
  • 2013年12月01日 16:37
  • 404

剑指offer——面试题11:数值的整数次方

bool g_InvalidInput = false; double Power(double base, int exponent) { g_InvalidInput = false; ...
  • sinat_20265495
  • sinat_20265495
  • 2016年11月26日 21:48
  • 172

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

转自:http://zhedahht.blog.163.com/blog/static/254111742009101563242535/ 题目:实现函数double Power(double ...
  • onlyonename
  • onlyonename
  • 2011年11月14日 23:05
  • 329

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

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 解题思路:注意次方为负数和0的情况 代码一: public class Solut...
  • u010013140
  • u010013140
  • 2017年07月12日 17:32
  • 45

【剑指offer】数值的整数次方

剑指offer上的第十一题,九度OJ上测试通过。 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 输入: 输入可能包含多个测...
  • mmc_maodun
  • mmc_maodun
  • 2014年05月11日 09:27
  • 2767

剑指Offer面试题11(Java版):数值的整数次方

题目:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题 1、自以为很简单的解法: 由于不需...
  • jsqfengbao
  • jsqfengbao
  • 2015年07月31日 08:43
  • 1769
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数值的整数次方
举报原因:
原因补充:

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