记录一下,原因是这个方法我没有想到。首先是特殊情况考虑不全,其次是在在进行计算时,没有想到这么巧妙的方法。
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);
}
}
本文介绍了一种使用位运算优化的高效求幂算法。通过特殊值判断和位运算技巧,该算法能有效减少乘法次数,提高计算效率。文章详细展示了算法的实现过程,并提供了完整的Java代码示例。
5495

被折叠的 条评论
为什么被折叠?



