第1关:递归求阶乘数列
#include<stdio.h>
long long solve(long long n)
{
/*********Begin*********/
long long p=1,i;
for(i=1;i<=n;i++)
p*=i;
return p;
/*********End**********/
}
int main(void)
{
long long n;
scanf("%lld",&n);
long long ans=0;
for(long long i=1;i<=n;i++)
ans+=solve(i);
printf("%lld", ans);
return 0;
}
第2关:递归实现输出一个整数的逆序
#include<stdio.h>
void solve(int n)
{
if(n<10)
{
printf("%d",n);
}
else
{
printf("%d",n%10);
return solve(n/10);
}
}
int main(void)
{
int n;
scanf("%d",&n);
solve(n);
return 0;
}
第3关:将整数递归转换成字符串
#include<stdio.h>
void solve(int n)
{
int temp=n%10;
if(n/10>0)
{
solve(n/10);
printf(" %d", temp);
}
else
printf("%d", temp);
}
int main(void)
{
int n;
scanf("%d",&n);
solve(n);
return 0;
}
第4关:递归实现Ackman函数
#include<stdio.h>
int Acm(int m,int n){
if(m==0&&n>0)
/*********Begin*********/
return n+1;
/*********End**********/
else if(n==0&&m>0)
/*********Begin*********/
return Acm(m-1,1);
/*********End**********/
else
/*********Begin*********/
return Acm(m-1,Acm(m,n-1));
/*********End**********/
}
int main(void)
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d", Acm(m,n));
return 0;
}