码迷,mamicode.com
首页 > 其他好文 > 详细

数值的整数次方

时间:2018-03-05 18:14:27      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:简单   lag   实现   false   nbsp   str   开始   递归   blog   

解题思路

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

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

 

数值的整数次方

标签:简单   lag   实现   false   nbsp   str   开始   递归   blog   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!