數值的整數次方

一、題目描述

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

題目來源:數值的整數次方

二、題目解析

class Solution {
public:
    double Power(double base, int exponent) {
        /**
         * 這道題的考點,我也不知道是什麼
         * 難道是考察 pow 函數的使用?
         */
#if 0
        double res = pow(base, exponent);
        return res;
#endif
        /**
         * 或者考察我們的循環迭代?
         */
/* // 一段錯誤代碼
        // 這樣的提交只能通過 40.00%的測試用例,
        // 因爲指數 exponent 可能是負數
        double res = base;
        for(int i = 1; i < exponent; ++i)
        {
            res = res * base;
        }
        
        return res;
*/
        /**
         * 我們來觀察一下 3^-2 = 1/9 = 1 / 3^2
         */
        if (exponent == 0)
        {
            // 浮點數據與0比較 
            if ((base >= -0.000001) && (base <= 0.000001))
            {
                return 0;
            }
            else
            {
                return 1;
            }
        }
        
        bool negative = false;
        if (exponent < 0)
        {
            negative = true;
            exponent = -1 * exponent;
        }
        double res = base;
        for (int i = 1; i < exponent; ++i)
        {
            res *= base;
        }
        if(negative)
        {
            return 1 / res;
        }
        else 
        {
            return res;
        }
    }
};

如有問題歡迎評論區指出,謝謝大家:)

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