猜年龄的问题
1 #include <stdio.h> 2 /* 3 题目:有5个人坐一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数。他说比第3个人大2岁。 4 问第3个人,他说比第2个人大2岁。问第2个人,他说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大? 5 6 解题思路:第一:这是一个连续求值的问题。知道第一个人的年龄,推算第5个人的年龄。(由第一个人求出第二个人,由第二个人求出第三个人。以此类推最终求出第五个人) 7 第二:在连续求值前会有一个结束条件。第一个人的年龄 = 10; 8 第三:由1,2两点 选择用递归来解决这类问题,逻辑清晰。 9 第四:每次求值结果 = 上次的值 +2 (找到通项公式) 10 11 */ 12 int FiveAge(int n); 13 int main(void) 14 { 15 int age; 16 17 age = FiveAge(5); 18 19 printf("%d\n",age); 20 21 return 0; 22 } 23 24 int FiveAge(int n) 25 { 26 if(1 == n)//结束递归的条件 27 return 10; 28 else 29 return FiveAge(n-1) + 2;//通项公式 30 }