好像可以用数学库函数double pow(double x,double y);
表示的是x的y次幂。
----------------解决方案--------------------------------------------------------
用一个FOR循环。连续相乘~
----------------解决方案--------------------------------------------------------
快速幂
复杂度O(logn)
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int mi(int da_an,int x,int n);
int main(void)
{
int x,n,da_an=1;
printf("please input x:");
scanf("%d",&x);
printf("please input n:");
scanf("%d",&n);
da_an=mi(da_an,x,n);
printf("%d",da_an);
}
int mi(int da_an,int x,int n)
{
int i;
for(i=0;i<n;i++)
{
da_an=da_an*x;
}
return(da_an);
}
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define IsEven( N ) ( ( N ) % 2 == 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 / 2 ) * X;
}
----------------解决方案--------------------------------------------------------
楼上的虽然logn,但效率却高不起来
事实上非递归写法更漂亮
[color=white]
----------------解决方案--------------------------------------------------------