【剑指offer刷题】-16-数值的整数次方

难度:简单

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

注:考察递归思想。

思路:实现的是库函pow的功能。先求平方,在平方的基础上求4次方,依次递归实现。公式为(源于剑指offer)

public class Solution { 
      boolean invalidInput=false;    
      public double Power(double base, int exponent) {     
        if(equal(base,0.0)&&exponent<0){
            invalidInput=true;
            return 0.0;
        }
        int absexponent=exponent;
        if(exponent<0)
            absexponent=-exponent;
        double res=getPower(base,absexponent);
        if(exponent<0)
            res=1.0/res;
        return res;
  }
    boolean equal(double num1,double num2){
        if(num1-num2>-0.000001&&num1-num2<0.000001)
            return true;
        else
            return false;
    }
    double getPower(double b,int e){
        if(e==0)
            return 1.0;
        if(e==1)
            return b;
        double result=getPower(b,e>>1);
        result*=result;
        if((e&1)==1)
            result*=b;
        return result;
    }
};


猜你喜欢

转载自blog.csdn.net/xmc_Muncy/article/details/80726081
今日推荐