劍指offer---數值的整數次方

題目描述

給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。

/**
 * 1.全面考察指數的正負、底數是否爲零等情況。
 * 2.寫出指數的二進制表達,例如13表達爲二進制1101。
 * 3.舉例:10^1101 = 10^0001*10^0100*10^1000。
 * 4.通過&1和>>1來逐位讀取1101,爲1時將該位代表的乘數累乘到最終結果。
 */

二分快速冪

class Solution {
public:
    double Power(double base,int exponent){
        int n=(exponent>0)?exponent:-exponent;
        double r=1.0;
        while(n){
            if(n&1==1)//n的二進制的最後一位是1
                r=r*base;
            base*=base;
            n=n>>1;//n/2
        }
        return (exponent>0)?r:1/r;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章