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

  • 相关阅读:
    Java文件流应用:复制文件
    Java IO流之文件流
    初识Java-IO流
    Java集合之Properties
    Java之FilenameFilter接口
    Java之File类
    Java内部类
    Java常用类之要点总结
    Java异常类(Throwable)
    php分布式缓存系统 Memcached 入门
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7616618.html
Copyright © 2011-2022 走看看