剑指Offer系列-面试题11:数值的整数次方

    xiaoxiao2021-03-26  25

    题目:实现函数double Power(double base, int exponent)。求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。 #include <iostream> using namespace std; bool g_InvalidInput = false; /// 输入是否非法的标识 /// 判断两个double类型的数是否相等 bool equals(double num1, double num2) { if(-0.0000001 < (num1 - num2) && (num1 - num2) < 0.0000001) { return true; } else { return false; } } /// 计算幂乘 double calcWithUnsignedExponent(double base, unsigned int exponent) { double result = 1.0; for(int i = 1; i <= exponent; ++i) result *= base; return result; } double Power(double base, int exponent) { g_InvalidInput = false; if(equals(base, 0.0) && exponent < 0) /// 如果底数为0而且指数小于0 { g_InvalidInput = true; return 0.0; } unsigned int absExponent = (unsigned int)(exponent); if(exponent < 0) absExponent = (unsigned int)(-exponent); double result = calcWithUnsignedExponent(base, absExponent); if(exponent < 0) result = 1.0 / result; return result; } int main() { double base; int exponent; cout << "Input base and exponent:" << endl; cin >> base >> exponent; double result = Power(base, exponent); if(equals(result, 0.0)) { if(g_InvalidInput) cout << "Input error!" << endl; else cout << "0.0" << endl; } else cout << result << endl; return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-658335.html

    最新回复(0)