题目:
实现函数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; }
原文:http://blog.csdn.net/lsh_2013/article/details/45623851