计算 m的n次方:
代码1:
//非递归形式:
#include <stdio.h>
long exp1(int a,int b);
int main()
{
int m,n;
long fab;
scanf("%d%d",&m,&n);
if(m>0&&n>=0)
{
fab=exp1(m,n);
printf("%d的%d次方=%ld\n",m,n,fab);
}
else
printf("sorry!\n");
}
long exp1(int a,int b)
{
long result=1;
while(b>0)
{
result=result*a;
b=b-1;
}
return result;
}
代码2:
//递归算法:
#include <stdio.h>
long exp2(int a,int b);
int main()
{
int m,n;
long fab;
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{
fab=exp2(m,n);
printf("%d的%d次方=%ld\n",m,n,fab);
}
else
printf("sorry!\n");
}
long exp2(int a,int b)
{
if(b==1)
return a;
else
return a*exp2(a,b-1);
}
代码3:
#include <stdio.h>
long int f(int x,int n)
{
if(n==1) return x;
else return x*f(x,n-1);//f(x)=x*f(n-1)
}
int main()
{
int n,x;
scanf("%d%d",&x,&n);
printf("%d的%d次方=%ld\n",x,n,f(x,n));
}
编译样例:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190729105156988.png)