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

算法题:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第 4 3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。_迭代