16剑指OFFER之数值的整数次方

参考资料:

关键词:

要考虑负数和0

自己的解答:
标准答案:
double Power(double dBase, int nExponent)
{
    bool bFlag = false;
    bool bFlag2 = false;
    if (dBase == 0.0)
        return 0.0;
    if (dBase < 0)
    {
        dBase = -dBase;
        bFlag = true;
    }
    if (nExponent < 0)
    {
        nExponent = -nExponent;
        bFlag2 = true;
    }


    double dResult = 1.0;
    for (int i = 0; i < nExponent; i++)
    {
        dResult *= dBase;
    }
    if (bFlag == true)
    {
        if (nExponent % 2 == 0)
            dResult = dResult;
        else
            dResult = -dResult;
    }
    if (bFlag2 == true)
    {
        dResult = 1.0 / dResult;
    }
    
    return dResult;


}

你可能感兴趣的:(16剑指OFFER之数值的整数次方)