剑指offer十二之数值的整数次方

Posted AI菌

tags:

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

一、题目

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

二、思路

1、传统方法计算,时间复杂度O(n)

2、递归方式计算,时间复杂度O(logn)

     当exponent为偶数时,例如求base^10,则result= base^5  *  base^5;

     当exponent为奇数数时,例如求base^11,则result= base^5 *  base^5 * base;

     接着采用递归的方法,计算base^5 即可。

三、代码

1、传统方法

技术分享
public class Solution {
    public double Power(double base, int exponent) {
     
        double result=1;
        for(int i=0;i<Math.abs(exponent);i++){
              result *=base;
        }
        
        if(exponent<0){
           result=1/result; 
        }
        return result;
    }
}
View Code

2、递归的方法

技术分享
public class Solution {
    public double Power(double base, int exponent) {
        double result=0.0;
         int n=Math.abs(exponent);

        if(n==0)
            return 1;

        if(exponent==1)
            return base;

        if(exponent==-1)
             return 1/base;

        result =Power(base,n>>1)*Power(base,n>>1);
        if((n&1)==1)
            result*=base;
        if(exponent<0)
            result=1/result;

        return result;   
       
    }
}
View Code

-------------------------------------------------------------------------------------------------

参考链接:https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00

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

剑指offer三十二之把数组排成最小的数

《剑指Offer》题目:数值的整数次方

剑指offer 12.数值的整数次方

剑指offer数值的整数次方

数值的整数次方-剑指Offer

剑指offer16数值的整数次方