数值的整数次方

题目:

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值