20:数值的整次方

数值的整次方

实现函数double(double base,int exponent),求base的exponent次方
要点:

  • 使用exponent>>1来代替exponent/2
  • 使用exponent&1来判断奇偶
  • 参数合规性判断
public class Offer21 {
   
   public static double power(double base,int exponent){
       double result = 0;
       if(exponent>0){
           result = powerCore(base,exponent);
       }else if(exponent<0){
           if(base<0)return 0;
          result = 1/powerCore(base,-exponent);

       }else {
           return 1;
       }
       return result;
   }

   //第一种
   public static double powerCore(double base,int exponent){
       if(exponent==1)return base;
       if(exponent==0)return 1;
       double result = power(base,exponent>>1);
       result*=result;
       //判断奇偶
       if((exponent&1)==1)result*=base;

       return result;
   }


   public static double power2(double base,int exponent){

       if(base==0)return 0;
       if(exponent==1)return base;
       double result ;
       if(exponent>0){
           result = powerCore2(base,exponent);
       }else if(exponent<0){
           result = 1/powerCore2(base,-exponent);
       }else {
           return 1;
       }

       return result;
   }
   //第二种
   public static double powerCore2(double base,int exponent){
       double result=base;
       int temp = exponent;
       while (true){
           result*=result;
           temp=temp>>1;
           if(temp==1)break;
       }
       if((exponent&1)==1)result*=base;

       return result;
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值