首页 > 其他 > 详细

数值的整数次方

时间:2018-03-05 17:30:30      阅读:195      评论:0      收藏:0      [点我收藏+]

解题思路

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

  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;
        }
    }
}

 

数值的整数次方

原文:https://www.cnblogs.com/wanglinyu/p/8510066.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!