1 题目
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
2 分析
本题读起来像是小学数学问题,但是要用递归的思想来解决它,就要从递归的三大要素分析:
- 该递归程序的目的:计算第五个人的年龄
- 递归的结束条件:倒推到第一个人时
- 递归的递推公式:每个人都比前一个人大两岁, a g e ( n ) = a g e ( n − 1 ) + 2 age(n)=age(n-1)+2 age(n)=age(n−1)+2
3 实现
#include <stdio.h>
int age(int n) {
if (n == 1) {
return 10;
} else {
return age(n - 1) + 2;
}
}
int main() {
printf("%d\n" ,age(5));
}
4 运行结果
18