c++用递归法实现:(1)有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁;问第4个人,他说比第3个人大2岁;问第3个人,他说比第2个人大2岁;问第2个人,说比第1个人大2岁;最后问第1个人,他说10岁。应用递归法,求第5个人多大。
时间: 2024-09-11 12:04:20 浏览: 26
C++封装快速排序类,并实现取第k小个数字
在C++中,你可以使用递归函数来解决这个问题。下面是一个简单的递归函数实现:
```cpp
int findAge(int position, int baseAge = 10) {
// 基线条件:当position等于5时,返回baseAge加递归层级减1
if (position == 5) {
return baseAge + 5 - 1; // 第5个人比第1人多4岁
}
// 递归条件:其余位置的人年龄比前一位大2岁
else {
return findAge(position + 1, baseAge + 2); // 调用自身,position加1并更新基础年龄
}
}
int main() {
int fifthPersonAge = findAge(1); // 从第1个人开始找,实际询问的是第5个人
std::cout << "第五个人的年龄是:" << fifthPersonAge << std::endl;
return 0;
}
```
在这个程序中,`findAge`函数接受一个位置参数和一个默认的基础年龄(初始为第1个人的10岁)。如果当前位置是5,就直接返回计算后的年龄;如果不是,则递归地询问下一个人,并将当前人的年龄增加2岁。
阅读全文