求数值的的整数次方(模拟实现pow函数)

求数值的的整数次方:

实现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;
}




你可能感兴趣的:(经典面试题,C)