自己寫一個(gè)pow()函數(shù)

問題:請(qǐng)自己動(dòng)手寫一個(gè)pow()函數(shù)。

??我們?cè)趯W(xué)習(xí)C語言的時(shí)候,可能已經(jīng)接觸過pow()函數(shù),它是C語言標(biāo)準(zhǔn)庫函數(shù)中自帶的一個(gè)函數(shù),使用的時(shí)候只需包含<math.h>就可以了,不需要你自己動(dòng)手去實(shí)現(xiàn)。

??在C語言標(biāo)準(zhǔn)庫函數(shù)中,pow()函數(shù)是這樣聲明的double pow(double x, double y),其作用就是返回x的y次冪。冪函數(shù)的實(shí)現(xiàn)還是比較簡單的,我們就自己動(dòng)手寫一個(gè):

func challenge(number: Int, power: Int) -> Int {
    
    // 對(duì)輸入的數(shù)據(jù)進(jìn)行校驗(yàn),確保底數(shù)和冪指數(shù)都是有意義的
    guard number > 0, power > 0 else { return 0 }
    
    // 初始化返回值,默認(rèn)其值為底數(shù)
    var returnValue = number
    
    for _ in 1..<power {
        
        // 返回值 = 底數(shù) * 底數(shù)(一共執(zhí)行power-1次)
        returnValue *= number
    }
    
    // 返回最后的結(jié)果
    return returnValue
}

challenge(number: 2, power: 3)  // 結(jié)果為8

??除了上面那種解決方案之外,還可以使用遞歸算法,這樣看上去可以讓代碼更簡潔:

func challenge1(number: Int, power: Int) -> Int {
    guard number > 0, power > 0 else { return 0 }
    
    // 如果冪指數(shù)為1,直接返回底數(shù)
    if power == 1 { return number }
    
    // 當(dāng)冪指數(shù)不為1時(shí),直接返回底數(shù)的power - 1次方
    return number * challenge1(number: number, power: power - 1)
}

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

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

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