zoukankan      html  css  js  c++  java
  • 剑指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

  • 相关阅读:
    json 拼二维json数组
    lnmp 环境搭建
    lnmp git ruby sass 安装
    制定clone的用户名
    git branch 重命名
    sql命令创建数据库
    layerui
    弹出确认框,打开新窗口
    Ajax请求小结
    .net core注入服务
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7616618.html
Copyright © 2011-2022 走看看