题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第 4 3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 5 问第一个人,他说是10岁。请问第五个人多大?
为了解决这个问题,我们可以使用两种不同的算法思路:递归和迭代。首先,我们明确问题的逻辑:每个人的年龄都是基于前一个人的年龄加2岁来确定的,从第一个人开始,他是10岁。
C语言实现
算法一:递归
c复制代码
#include <stdio.h>
// 递归函数,计算第n个人的年龄
int getAge(int n, int firstAge) {
if (n == 1) {
return firstAge;
} else {
return getAge(n - 1, firstAge + 2);
}
}
int main() {
int firstPersonAge = 10; // 第一个人的年龄
int fifthPersonAge = getAge(5, firstPersonAge); // 计算第五个人的年龄
printf("第五个人的年龄是:%d岁\n", fifthPersonAge);
return 0;
}
算法二:迭代
c复制代码
#include <stdio.h>
int main() {
int firstPersonAge = 10; // 第一个人的年龄
int age = firstPersonAge; // 当前计算的年龄
for (int i = 2; i <= 5; i++) {
age += 2; // 每个人的年龄都是前一个人的年龄加2
}
printf("第五个人的年龄是:%d岁\n", age);
return 0;
}
Python实现
算法一:递归
python复制代码
def get_age(n, first_age):
if n == 1:
return first_age
else:
return get_age(n - 1, first_age + 2)
first_person_age = 10
fifth_person_age = get_age(5, first_person_age)
print(f"第五个人的年龄是:{fifth_person_age}岁")
算法二:迭代
python复制代码
first_person_age = 10
age = first_person_age
for i in range(2, 6): # 从第2个人开始,到第5个人
age += 2
print(f"第五个人的年龄是:{age}岁")
以上是使用C语言和Python分别通过递归和迭代两种算法来解决这个问题的示例代码。递归方法通过函数调用自身来解决问题,而迭代方法则通过循环来逐步解决问题。在这个特定的问题中,由于我们只需要计算到第五个人,所以递归和迭代在性能上的差异并不明显,但在处理更复杂或更深层次的递归时,迭代方法通常更为高效和稳定。
标签:10,迭代,个人,int,age,人大,两岁,第五个,first From: https://blog.51cto.com/u_15692628/11989538