高效率的取幂运算

计算X^N的常见算法是使用N-1次乘法自乘,时间复杂度为O(n)。使用下面的递归算法更好,时间复杂度为O(logn):

template<class T>
T Pow(T x, unsigned int N)
{
	if (0==N)
	{
		return 1;
	}
	else if (1==N)
	{
		return x;
	}
	else if (0==N%2)
	{
		return Pow(x*x, N/2);
	}
	else
	{
		return Pow(x*x, N/2)*x;
	}
}


posted @ 2012-02-28 15:21  刘军newhand_liu  阅读(188)  评论(0编辑  收藏  举报