第一关 递归求阶乘数列
#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;
}
第二关 递归实现输出一个整数的逆序
#include<stdio.h>
void solve(int n){
printf("%d", n%10);
/*********Begin*********/
n /= 10;
/*********End**********/
if(n>0) solve(n);
}
int main(void)
{
int n;
scanf("%d",&n);
solve(n);
return 0;
}
第三关 将整数递归转化为字符串
#include<stdio.h>
void solve(int n){
int temp=n%10;
/*********Begin*********/
n /= 10;
if(n) solve(n);
/*********End**********/
if(n)
printf(" %d", temp);
else
printf("%d", temp);
}
int main(void)
{
int n;
scanf("%d",&n);
solve(n);
return 0;
}
第四关 递归实现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;
}