猜年龄的问题

 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 }

 

posted on 2018-08-26 16:40  王朝马汉  阅读(316)  评论(0编辑  收藏  举报

导航