面试题11:数值的整数次方

来源:互联网 发布:淘宝最畅销产品排行榜 编辑:程序博客网 时间:2024/06/08 04:28
链接:https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00
来源:牛客网

传统公式求解时间复杂度O(n)
public class Solution {
    publicdoublePower(doublebase,int exponent) {
        double result=1;
        for(inti=0;i<Math.abs(exponent);i++){
            result*=base;
        }
        if(exponent<0){
            result=1/result;
        }
        returnresult;            
  }
}
递归:n为偶数,a^n=a^n/2*a^n/2;n为奇数,a^n=(a^(n-1)/2)*(a^(n-1/2))*a
时间复杂度O(logn) 
public class Solution {
    publicdoublePower(doublebase,int exponent) {
        intn=Math.abs(exponent);
        if(n==0)
            return1;
        if(n==1)
            returnbase;
        double result=Power(base,n>>1);
        result*=result;
        if((n&1)==1)      //若为奇数,再乘一次
            result*=base;
        if(exponent<0)
            result=1/result;
        returnresult;            
  }
}
原创粉丝点击