數(shù)值的整數(shù)次方

??環(huán)境:??偷木幾g環(huán)境
??語言:JavaScript
??難點:沒有考慮到底數(shù)為0,指數(shù)為負數(shù)和正數(shù)的不同情況。
??題目:給定一個double類型的浮點數(shù)base和int類型的整數(shù)exponent。求base的exponent次方。
??解題思路:我自己的方法比較簡單,直接利用循環(huán)去處理的。
??代碼:

function Power(base, exponent)
{
    // write code here
    if(base == 0)
        return 0;
    var result = 1;
    if(exponent == 0)
        return 1;
    else if(exponent > 0){
        for(let i = 0; i < exponent; i++){
            result *= base;
        }
    }
    else if(exponent < 0){
        for(let i = exponent; i < 0; i++){
                result *= (1 / base);
            }
    }
    return result;
}

后來看了討論里面,其他朋友用位移運算做的處理,感覺很棒,最近做題經(jīng)常會用到位移思想,我覺得這個想法很別致。而且這里面也找了數(shù)學規(guī)律,我自己用筆演算了一遍,規(guī)律暫且想的不是很明白,我還得再想想。

public double Power(double base, int n) {
    double res = 1,curr = base;
    int exponent;
    if(n>0){
        exponent = n;
    }else if(n<0){
        if(base==0)
            throw new RuntimeException("分母不能為0"); 
        exponent = -n;
    }else{// n==0
        return 1;// 0的0次方
    }
    while(exponent!=0){
        if((exponent&1)==1)
            res*=curr;
        curr*=curr;// 翻倍
        exponent>>=1;// 右移一位
    }
    return n>=0?res:(1/res);       
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容