1. 用递归求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字:
#include<stdio.h>
long long solve(long long n){
long long sum = 1;
while (n){
sum = sum * n;
n--;
}
return sum;
}
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.编写一个递归函数,将一个整数n逆序输出,比如,n = 12345,输出54321:
#include<stdio.h>
void solve(int n){
printf("%d", n%10);
n /= 10;
if(n>0) solve(n);
}
int main(void)
{
int n;
scanf("%d",&n);
solve(n);
return 0;
}
3.用递归法将一个整数n转换成字符串。例如,输入n为483,输出字符串 4 8 3,每个数字后面接一个空格用于隔开字符:
#include<stdio.h>
void solve(int n){
int temp=n%10;
n /= 10;
if(n) solve(n);
if(n)
printf(" %d", temp);
else
printf("%d", temp);
}
int main(void)
{
int n;
scanf("%d",&n);
solve(n);
return 0;
}
4.编写一函数实现下列Ackman函数,其中m,n为正整数 样例输入: 1 1 样例输出: 3
#include<stdio.h>
int Acm(int m,int n){
if(m==0&&n>0)
return n+1;
else if(n==0&&m>0)
return Acm(m-1,1);
else
return Acm(m-1,Acm(m,n-1));
}
int main(void)
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d", Acm(m,n));
return 0;
}