给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
拿到这个题首先想到三种情况
1.如果base为0怎么办?
2.如果exponent为负数怎么办?
3.如果base为负数要会有什么影响?
public static double Power(double base, int exponent){
// 由于计算机内表示小数时都有误差,判断两个小数是否相等,判断它两之差的绝对值是否在一个很小的范围内即可
if(base > -0.000001 && base < 0.000001){
return 0;
}
if(exponent > 0){
return getPower(base,exponent);
}else{
// x^(-n) = 1/x^n. 特殊处理exponent为负的情况
return 1/getPower(base,-exponent);
}
}
//此方法只是用来跑base的正exponent次方。
public static double getPower(double base, int exponent){
//任何数的0次方都是1
if(exponent == 0){
return 1;
}
return base * getPower(base ,exponent - 1);
}