21、题目:利用递归方法求5!。
int main()
{
int i;
int fact();
for(i=0;i<=5;i++)
printf("\40:%d!=%d\n",i,fact(i));
}
int fact(j)
int j;
{
int sum;
if(j==0)
sum=1;
else
sum=j*fact(j-1);
return sum;
}
22、题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
printf("请输入5个字符");
char c1[5];
scanf("%s",c1);
int i;
for(i=4;i>=0;i--)
{
printf("%c",c1[i]);
}
printf("\n");
-------------------------------------------------------
int main()
{
int i=5;
void palin(int n);
printf("请输入5个字符\40:\40");
palin(i);
printf("\n");
}
void palin(n)
int n;
{
char next;
if(n<=1)
{
next=getchar();
printf("相反顺序输出结果\40:\40");
putchar(next);
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}
23、有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
int age(n)
int n;
{
int AGE;
if(n == 1)
AGE = 10;
else
AGE = age(n-1)+2;
return (AGE);