题目:有 5 个人坐在一起,问第五个人多少岁,他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。问第 2 个人,说比第一个人大两岁。最后 问第一个人,他说是 10 岁。
请问第五个人多大?(递归实现)
分析:逆向推理,从最后一个人开始往前报数。
最后一个人 开始 1 -> 10
2 -> 10 + 2
3 -> 10 + 2 + 2
4 -> 10 + 2 + 2 + 2
5 -> 10 + 2 + 2 + 2 + 2 = 18
#include<stdio.h>
int getAge(int n) {
if (n == 1) {
return 10;
} else {
return getAge(n - 1) + 2;
}
}
int main()
{
int age = getAge(5);
printf("%d", age);
return 0;
}
执行结果:18