求数值的的整数次方:
实现double Power(double base , int exponent),求base的ponent次方。不能使用库函数,同时不考虑大数问题
自以为很简单的解法:
double Power(double base, int exponent)
{
double result = 0.0;
for (int i = 1; i <= exponent; ++i)
{
result *= i;
}
return result;
}
考虑:输入的指数(exponent)小于1,也就是说零和负数怎么办?很明显上面的没有考虑这些情况。
优化:
double Power(double base, int exponent)
{
if (exponent ==0)
{
return 1;
}
if (exponent ==1)
{
return base;
}
int result = Power(base, exponent >> 1);
result *= result;
if (exponent & 0x01)
result *= base;
return result;
}