练习03-03-02(函数的递归调用)(回溯和递归)
(1)有五个学生坐在一起,问第五个学生的年龄,他说比第4个学生大2岁,。问第四个学生,他说比第三个学生大2岁。问第三个学生,又说他比第二个学生大2岁。问第2个学生,他所比第一个学生大两岁。最后问第一个学生,他说是10岁。请问第五个学生的年纪。
数学公式表示:
输出样例:
NO.5 age:18
--------------------------------
Process exited after 0.02141 seconds with return value 0
请按任意键继续. . .
代码如下:
#include<stdio.h>
int main()
{
int age(int n);
int y=5;
printf("NO.5 age:%d\n",age(y));
return 0;
}
int age(int n)
{
int c;
if(n==1){
c=10;
}else{
c=age(n-1)+2;
}
return c;
}
(2)用递归调用的方法求n!
数学公式(类似分段函数):
输出样例:
enter the number:
3
3! = 6
--------------------------------
Process exited after 1.41 seconds with return value 0
请按任意键继续. . .
代码如下:
#include<stdio.h>
int factorial(int n)
{
if(n==0){
n=1;
}else{
n=n*factorial(n-1);
}
return n;
}
int main()
{
printf("enter the number:\n");
int n;
scanf("%d",&n);
printf("%d! = %d",n,factorial(n));
return 0;
}