计算X^N的常见算法是使用N-1次乘法自乘,但是递归算法更好,如果N是偶数,
我们有X^N=X^(N/2)X^(N/2),如果N是奇数则X^N=[X^(N-1)/2] [X^(N-1)/2].
#include<stdio.h>
int IsEven(unsigned N);
long int Pow(long int X,unsigned int N);
int main()
{
long int X=0;
unsigned int N=0;
scanf("%ld%d",&X,&N);
printf("%ld",Pow(X,N));
return 0;
}
long int Pow(long int X,unsigned int N)
{
if(N==0)
return 1;
/*if(N==1)
return X;*/
if(IsEven(N))
return Pow(X*X,N/2);
else
return Pow(X*X,N-1)*X;
}
int IsEven(unsigned N)
{
if(N%2==0)
return 1;
else
return 0;
}
算法复杂度O(logN),
写代码时写成scanf(“%ld%d\n”,&X,&N);一直无法显示答案,orz 难受