剑指Offer:数值的整数次方

来源:互联网 发布:编辑gif软件ios 编辑:程序博客网 时间:2024/06/09 18:37
bool g_InvalidInput = false;//注意double float等类型的相等比较bool equal(double num1, double num2) {    if ((num1 - num2) > -0.000001 && (num1 - num2) < 0.000001) {        return true;    }    else        return false;}double PowerWithUnsignedExponent(double base, unsigned int exe) {    double result = 1.0;    for (int i = 1;i <= exe;i++) {        result *= base;    }    return result;}double PowerWithUnsignedExponent1(double base, unsigned int exe) {    if (exe == 0) {        return 1;    }    if (exe == 1) {        return base;    }    double result = PowerWithUnsignedExponent1(base, exe >> 1);    result *= result;    if (exe & 0x1 == 1) {        result *= base;    }    return result;}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;}
0 0
原创粉丝点击