数值的整数次方

解题思路

  一开始看到这个题目会觉得很简单,但如果按照一开始的思路做下去就会发现思维有很多漏洞,同时效率也不会很高,需要注意的问题如下:

  1.base是double类型,并且有可能为零,exponent为int类型,并且有可能为负数

  2.对于double类型的数判断相等,得考虑误差

  3.对于递归的执行顺序

问题描述

 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 

代码实现

 

public class Solution {
    public double Power(double base, int exponent) {
        if(isDoubleEqual(base,0.0))
            return 0;
        if(exponent==0)
            return 1;
        if(exponent==1)
            return base;
        int flag = exponent<0.0?-exponent:exponent;
        double result = Power(base, flag>>1);
            result*=result;
        if((flag&1)==1)
            result*=base;
        return exponent<0.0?(1.0/result):result;
  }
    public boolean isDoubleEqual(double a, double b){
        if(a-b<0.0000001&&a-b>-0.0000001){
            return true;
        }
        else{
            return false;
        }
    }
}

 

posted @ 2018-03-05 17:11  休眠体  阅读(114)  评论(0编辑  收藏  举报