给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解法: 首先明确下图的公式
所以我们可以使用递归去求解这个问题,同时要注意当指数为负数时候对结果的影响
class Solution {
public:
double Power(double base, int exponent)
{
bool flag_of_exponent = false;
if (base == 0.0 && exponent == 0)
{
flag_of_exponent = true;
return 0.0;
}
unsigned int new_exponent = (unsigned int)exponent;
if (exponent < 0) //指数为负的情况下
{
new_exponent = (unsigned int)(-exponent);
}
double result = PowerByUnsignedExponent(base, new_exponent);
if (exponent < 0) //指数为负的结果运算
result = 1.0 / result;
//std::cout << new_exponent << endl;
return result;
}
double PowerByUnsignedExponent(double base, unsigned int exponent)
{
if (exponent == 0)
return 1;
if (exponent == 1)
return base;
double result = PowerByUnsignedExponent(base, exponent >> 1);
result *= result;
if ((exponent & 0x1) == 1) //判断奇偶
result *= base;
return result;
}
};