数值的整数次方

Posted 休眠体

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数值的整数次方相关的知识,希望对你有一定的参考价值。

解题思路

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

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

 

以上是关于数值的整数次方的主要内容,如果未能解决你的问题,请参考以下文章

16 数值的整数次方 (第3章 高质量的代码)

剑指offer数值的整数次方

算法:数值的整数次方

算法:数值的整数次方

数值的整数次方-剑指Offer

Offer[16] 数值的整数次方