c语言解决有甲乙丙丁四人,甲比乙大3岁,乙比丙大2岁,丙比丁大1岁,若丁为20岁,则甲的年龄是?(要求用递归的方法来实现)
时间: 2023-06-06 16:05:30 浏览: 54
甲的年龄是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)` 表示当前人与下一个人的年龄差,根据当前人的编号使用三目运算符进行选择。
相关问题
用C语言表示甲乙丙丁四人,甲说比乙大3岁,乙说比丙大2岁,丙说比丁大1岁,则甲的年龄?
根据题意,可以列出方程:
甲 = 乙 + 3
乙 = 丙 + 2
丙 = 丁 + 1
将丙的年龄代入乙的式子中,得到:
乙 = (丁 + 1) + 2
化简得:
乙 = 丁 + 3
再将乙的年龄代入甲的式子中,得到:
甲 = (丁 + 3) + 3
化简得:
甲 = 丁 + 6
因此,甲的年龄比丁大6岁。
用c语言编程有甲乙丙丁四人,甲说比乙大3岁,乙说比丙大2岁,丙说比丁大1岁,若丁为20岁,则甲的年龄?(要求:利用递归的方法来解决此题)
根据题目,丁的年龄为20岁,丙比丁大1岁,因此丙的年龄为21岁。乙比丙大2岁,因此乙的年龄为23岁。甲比乙大3岁,因此甲的年龄为26岁。代码如下:
#include <stdio.h>
int age(int n)
{
if(n == 4)
return 20;
else
return age(n+1) + n;
}
int main()
{
int a = age(1);
printf("甲的年龄为:%d岁\n",a);
return 0;
}
输出结果为:甲的年龄为:26岁。