溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2020-07-05 11:41:21 來源:網(wǎng)絡(luò) 閱讀:396 作者:duanjiatao 欄目:編程語言

題目描述: 實(shí)現(xiàn)函數(shù) double Power(double base, int exponent), 求base的exponent次方。不得使用庫函數(shù),同時不需要考慮大數(shù)問題。

分析:

有的面試者可能認(rèn)為題目很簡單,因此順手就寫下了如下代碼:

double Power(double base, int exponent)
{
    double result = 1.0;
    for(int i = q; i <= exponent; ++i)
        result *= result;
        
        return result;
}

如果寫出這樣的代碼,那么請面壁思過!


全面但不夠高效的解法

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

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

bool g_InvalidInput = false;
double Power(double base, int exponent)
{
    g_InvalidInput = false;
 
    if(equal(base, 0.0) && exponent < 0)
    {
        g_InvalidInput = true;
        return 0.0;
    }
 
    unsigned int absExponent = (unsigned int)(exponent);
    if(exponent < 0)
        absExponent = (unsigned int)(-exponent);
 
    double result = PowerWithUnsignedExponent(base, absExponent);
    if(exponent < 0)
        result = 1.0 / result;
 
    return result;
}


double PowerWithUnsignedExponent(double base, unsigned int exponent)
{
    double result = 1.0;
    /
    for(int i = 1; i <= exponent; ++i)
        result *= base;
 
    return result;
}


bool equal(double num1, double num2)
{
    if((num1 - num2 > -0.0000001)
        && (num1 - num2 < 0.0000001))
        return true;
    else
        return false;
}

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

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

其實(shí),上述解法已經(jīng)比較全面了,但是如果遇到追求效率的面試官,則會提醒你還有更高效的方法。

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

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

這個公式很容易使用遞歸來實(shí)現(xiàn)

double PowerWithUnsignedExponent(double base, unsigned int exponent)
{
    if(exponent == 0)
        return 1;
    if(exponent == 1)
        return base;

    double result = PowerWithUnsignedExponent(base, exponent >> 1);
    result *= result;
    if((exponent & 0x1) == 1)
        result *= base;

    return result;
}

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

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


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI