题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
- 利用pow()函数,以及循环求值,又是找不到工作系列。最好是利用快速幂来实现,但是也要注意代码的完整性。
double power(double base, int exponent)
{
if (exponent == 0 && base == 0)
return false;
if (fabs(base) <= 1e-5)
return 0;
if (fabs(base - 1) <= 1e-5)
return 1;
if (fabs(base + 1) <= 1e-5)
return exponent % 2 ? -1: 1;
if (exponent < 0)
{
base = 1 / base;
exponent = -exponent;
}
double res = 1;
while (exponent)
{
if (exponent % 2)
res *= base;
base *= base;
exponent >>= 1;
}
return res;
}