1. 迭代算法
long int pow(long int X, unsigned int N)
{
long int val = 1;
for(int i = 0; i < N; i++)
val *= X;
return val;
}
2. 递归算法
long int pow(long int X, unsigned int N)
{
if(N == 0)
return 1;
if(N == 1)
return X;
if( N % 2 == 0)
return pow( X * X, N / 2);
else
return pow( X * X, N / 2) * X;
}
递归算法原理:
N为偶数: X^N = X^(N/2) * X^(N/2)
N为奇数: X^N = X^(N/2) * X^(N/2) * X
比如 X^10 = X^5 * X^5, X^5 = X^2 * X^2 * X, X^2 = X^1 * X^1。
3. 二者比较
(1)迭代算法需要O(1)空间复杂度,需要O(N)时间复杂度。
需要进行N此乘法运算,而乘法又比较耗费时间。
(2)