C语言练习题-C语言练习题实例28
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人的岁数,需知道第四个人的岁数,依次类推,一直回推到第一个人(10岁),再递推回来。
实例
#include <stdio.h>
int age(int n);
int main() {
printf("%d\n", age(5));
return 0;
}
int age(int n) {
int c;
if (n == 1)
c = 10;
else
c = age(n - 1) + 2;
return c;
}
以上实例输出结果为:
18
该程序使用递归方法计算第五个人的年龄。函数 age()
接受一个整数参数 n
,代表第几个人的年龄。如果 n
为1,则年龄为10岁。否则,通过递归调用 age(n-1)
来计算前一个人的年龄,并将其加上2,得到当前人的年龄。递归调用在回推阶段完成,直到推到第一个人为止。最后,返回第五个人的年龄。在主函数中,我们调用 age(5)
来获取第五个人的年龄,并将其打印出来。