数值的整数次方

一、题目描述

给定一个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;
        }
    }
};

如有问题欢迎评论区指出,谢谢大家:)

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