首页 > 其他 > 详细

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

时间:2017-10-01 09:36:41      阅读:330      评论:0      收藏:0      [点我收藏+]

一、题目

  给定一个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十二之数值的整数次方

原文:http://www.cnblogs.com/hezhiyao/p/7616618.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!