记录一下,原因是这个方法我没有想到。首先是特殊情况考虑不全,其次是在在进行计算时,没有想到这么巧妙的方法。
public class Main
{
public double solution(double base,int exp){
if(exp==0)return 1.0;
if(base==0.0){
if(exp<0){
throw new RuntimeException("分母不能为零");
}
return (exp==0)?1.0:0.0;
}
if (exp<0)return 1/solution(base,-exp);
if(exp==1)return base;
double value=solution(base,exp/2);
return (exp>>1==0)?value*value:base*value*value;
}//其实这个右移操作没什么意义,只是提醒自己,位操作的意义。完全可以换作取余操作。exponent%2
public static void main(String[] args){
Main mains=new Main();
double num=mains.solution(4.2,-1);
System.out.print(num);
}
}