![]()
public class test11{
private static boolean invalidInput = false;//指示输入是否非法
public static double power(double base, int exponent){
if(base>-0.0000001&&base<0.0000001){//判断是否为0
if(exponent<0){
invalidInput = true;//输入非法
}
return 0;
}
if(exponent<0){
return 1/powerWithUnsignedExponent(base,-exponent);
}
return powerWithUnsignedExponent2(base,exponent);
}
//循环
private static double powerWithUnsignedExponent(double base, int absExponent) {
double result = 1.0;
for(int i=1;i<=absExponent;i++){
result = result * base;
}
return result;
}
//递归
private static double powerWithUnsignedExponent2(double base, int absExponent) {
if(absExponent==0) return 1;
if(absExponent==1) return base;
double result = powerWithUnsignedExponent2(base,absExponent>>1);
result *= result;
if((absExponent&1)==1){
result *= base;
}
return result;
}
public static void main(String[] args){
System.out.println(power(2,-2));
}
}