思路:
#include<iostream>
using namespace std;
class Solution {
public:
double Power(double base, int exponent) {
if (isEqual(base, 0.))
return 0.;
unsigned int absExponent = 0;
if (exponent >= 0)
absExponent = (unsigned int)exponent;
else
absExponent = (unsigned int)(-exponent);
double result = PowerWithUnsignedExponent(base, absExponent);
if (exponent < 0)
result = 1. / result;
return result;
}
private:
bool isEqual(double num1, double num2)
{
if (abs(num1 - num2) < 0.0000001)
return true;
else
return false;
}
double PowerWithUnsignedExponent(double base, unsigned int exponent)
{
if (exponent == 0)
return 1.;
if (exponent == 1)
return base;
double res = 1.;
if (exponent & 0x1 == 1)//判断是否为奇数
res *= base*PowerWithUnsignedExponent(base * base, exponent >> 1);
else
res *= PowerWithUnsignedExponent(base * base, exponent >> 1);
return res;
}
};
int main() {
Solution solution;
double result = solution.Power(3., 4);
cout << result << endl;
system("pause");
return 0;
}