首页 > 其他 > 详细

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

时间:2015-05-10 20:33:59      阅读:235      评论:0      收藏:0      [点我收藏+]

题目:

实现函数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;
}


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

原文:http://blog.csdn.net/lsh_2013/article/details/45623851

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!