题目:实现函数double Power(double base,int exponent),求base的exponent次方。
不得使用库函数,同时不需要考虑大数问题。
#include<iostream>
using namespace std;
double Power(double base,int exponent)
{
double s=1.0;
//此处不太合理,不能直接使用== 判断,double与float型的数据都是有误差的,
//只能判断他们之差的绝对值是不是在一个很小的范围内。
if(base==0)
return 0;
else
{
if(exponent<0)
{
for(int i=0;i<-exponent;i++)
s=s*((double)1/base);
}
else
{
for(int i=0;i<exponent;i++)
s=s*base;
}
}
return s;
}
改进方法:使用全局变量来标识是否出错
//当出错时invalinput 为true,否则为false。
bool invalinput=false;//全局变量
double Power(double base,int exponent)
{//将特殊的情况排除
invalinput=false;
if(equal(base,0.0)&&exponent<0)
{
invalinput=true;//出错,返回值为0.
return 0.0;
}
unsigned i