题目:有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分别通过递归和迭代两种算法来解决这个问题的示例代码。递归方法通过函数调用自身来解决问题,而迭代方法则通过循环来逐步解决问题。在这个特定的问题中,由于我们只需要计算到第五个人,所以递归和迭代在性能上的差异并不明显,但在处理更复杂或更深层次的递归时,迭代方法通常更为高效和稳定。