ABCDE五人夜里合伙捕鱼,第二天凌晨都疲惫不堪,于是各自找地方睡觉。第二天,A第一个醒来,将鱼分成5份,扔掉多余的一条,拿走自己的一份。BCDE重复同样操作,问他们至少合伙捕了多少鱼?

解题思路:设鱼的总数是x,A分完后剩下的鱼数为n1,

      第一次分完后:n1=4*(x-1)/5

      第二次分完后:n2=4*(n1-1)/5

      第三次分完后:n3=4*(n2-1)/5

      第四次分完后:n4=4*(n3-1)/5

      第五次分完后:n5=4*(n4-1)/5

从最后一次开始向前反推,设分鱼函数为sub,则该函数每次返回值为上一次分完后的鱼数。

程序代码:

 1 int sub(int n)
 2 {
 3 
 4     if(n==1)
 5     {
 6         static int i;
 7         do{i++;}
 8         while(i%4!=0);
 9         return (i/4*5+1);
10     }
11     else
12     {
13         int x;
14         do
15         {
16             x=sub(n-1);
17         }while(x%4!=0);
18         return (x/4*5+1);
19     }
20 }
21 
22 void main()
23 {
24     int n=5;
25     int x;
26     x=sub(n);
27     printf("一共有%d条鱼\n",x);
28     system("pause");
29 }