c语言解决有甲乙丙丁四人,甲比乙大3岁,乙比丙大2岁,丙比丁大1岁,若丁为20岁,则甲的年龄是?(要求用递归的方法来实现)
时间: 2023-06-06 19:05:30 浏览: 238
用递归调的方法计算年龄 汇编
甲的年龄是26岁。
递归实现:
```c
int age(int n) {
if (n == 4) {
return 20;
}
return age(n+1) + (n == 1 ? 3 : n == 2 ? 2 : 1);
}
int main() {
int a = age(1);
printf("%d\n", a);
return 0;
}
```
解释:递归函数 age(n) 表示求第 n 个人的年龄,根据题意可知,丁的年龄是 20 岁,因此递归结束条件为 n=4,返回 20。而每个人的年龄都比下一个人大,因此可以递归调用 age(n+1) 来求得比当前人年纪更大的人的年龄,然后再加上当前人与下一个人的年龄差(甲比乙大 3 岁,乙比丙大 2 岁,丙比丁大 1 岁),最终得到当前人的年龄。其中,`(n == 1 ? 3 : n == 2 ? 2 : 1)` 表示当前人与下一个人的年龄差,根据当前人的编号使用三目运算符进行选择。
阅读全文