亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

劍指Offer-數值的正數次方

標簽:
Java 算法

        最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,推荐要找工作的伙伴去剑指Offer刷题。


题目描述

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


这是一道整数快速幂的题目,根据二进制的进位来进行乘法运算,大大减少的乘的次数:

例如 (5.08)^7 = (5.08)*(5.08)*(5.08)*(5.08)*(5.08)*(5.08)*(5.08)

假如是常规的乘法得乘七次,而快速幂的话则保留了上一次的乘积 (5.08)^7 = (5.08)^1 * (5.08)^3 * (5.08)^4 减少了很多次数

代码如下:


public class Solution {
    public double Power(double base, int exponent) {
        
        boolean flag = true;
        if(exponent < 0){
            flag = false;
            exponent = -exponent;
        }
        
        double res  = 1.00;
        while(exponent > 0){
            if(exponent % 2 == 1){
                //奇数位的话直接乘上base
                res = res * base;  
            }
            exponent = exponent >> 1;
            //偶数位的话叠加
            base = base * base;
        }   
        
        //如果为负数,结果则为倒数
        if(flag == false){
            return 1.0/res;
        }
        
        return res;
   }
}


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
7794
獲贊與收藏
665

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消