题目:
实现函数Power(double base,int exponed),求base的exponed次方,不能使用库函数,不需要考虑大数问题。
输入:
输入一个浮点型数字和一个整数数字(不管正负)
输出:
浮点数的整数次方
解题思路:
这样的问题很简单,但是要考虑一些边界性问题,比如base的exponed次方如果都为0,那么在数学上就是没有意义的,所以我们要进行特殊处理,还有如果输入的exponed为负数,那么我们就做取反操作,还有一个细节我们还是要注意,我们不能直接用(base==0)来判断base是否为0,因为计算机处理小数时是会有误差的。所以,我们判断两个数的差的绝对值是否在某一个范围之内。
Java代码实现:
public static void main(String[] args) {
// TODO Auto-generated method stub
//System.out.println(PowerWinUnsigneExponet(2, 3));
System.out.println(Power(2, 4));
}
public static boolean InvaliIput=false;
public static double Power(double base,int exponent){
InvaliIput=false;
//健壮性测试,只能判断他们之差是不是在一定范围内,如果在 则可以认为==0
if( ((base-0)>-0.0000001 && (base-0.0)<=0.000001) && exponent==0){
InvaliIput=true;
return 0.0;
}
if(exponent<0){
exponent=-exponent;
}
double temp=PowerWinUnsigneExponet(base,exponent);
return temp;
}
public static double PowerWinUnsigneExponet(double base,int exponent){
double temp=1.0;
for(int i=0;i<exponent;i++){
temp*=base;
}
return temp;
}