剑指offer-计算一个数值的n次方

字面意思,看起来很简单的一件事,最先想到的就是powerWithExponend里面写的情况,以为这就完了。看别人代码的时候才发现这么多问题没有考虑到,先是equal的重定义,后是exponent的取值的三种情况,在后面是base是否取零的两种情况。

还是太年轻!

 

public class Solution {
   public double powerWithExponend(double base,int exponent){
        double res = 1.0;
        for(int i = 1; i <= exponent; i++){
            res *= base;
        }
        return res;
    }

    public boolean equal(double num1, double num2) {
        if(Math.abs(num1 - num2) < 0.0000001){
            return true;
        }
        return false;
    }

    public double Power(double base, int exponent) {
        double res = 0.0;
        if(equal(base, 0.0) && exponent <0){
            try{
            throw new Exception("没有意义");
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        if(exponent == 0){
            return 1.0;
        }else if(exponent < 0){
            return powerWithExponend(1/base, -exponent);
        }else {
            return powerWithExponend(base,exponent);
        }
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值