【 tulaoshi.com - 编程语言 】
                             
                                                                                        卖桃子 问题:   一筐桃子,第一天买掉一半又吃掉一个;第二天买掉余下的一半又吃掉一个;   第三天,第四天,第五天以后都照此办理,最后剩下1个,问筐中共有多少个桃子. 解答:  用递归的方法求解,源程序如下:  #include iostream.h
  void main()
  {
       int i,remaining=1,day;
     cout"请输入卖桃子的天数:"endl;
      cinday;
      coutendl;
      for(i=1;i=day;i++)
     {
      remaining=2*remaining+2;
     }
      cout"原有桃子的总数为:"endl;
      coutremainingendl;
    } 另外一个相似的问题:                       递推捕鱼的问题问题:
  A,B,C,D,E合伙夜间捕鱼,凌晨是都疲惫不堪,各自啊在河边的树丛中找地方睡着了。
  日上三竿,A第一个醒来,他将鱼平分为5分,把多余的一条扔回湖中,拿自己的一份回家
  去了;B第二个醒来,也将鱼平分为5分,扔掉多余的一条,只拿走自己的一分;接着C,D,
  E依次醒来,也都按同样的办法分鱼。问5人至少合伙捕到多少条鱼?每个人醒来后所看到的
  鱼数是多少条?//编制时间:2004年11月22日
  //主要功能:递归算法的事例
  //编制人:周峰
    其中的一组解也是最小解为:
    621
    496
    396
    316
    252    
    程序的解不是唯一的,设定不同的fish[0]值就可能得到不同的解,比如说fish[0]=721时
    就可得到另一组解
    1246
    996
    796
    636
    252
  程序的原代码:
   #include iostream.h
  void main()
  {
   int fish[5]={721,1,1,1,1};
   int i;
      do
   {          
    for(i=0;i=3;i++)
    {  if((fish[i]-1)%5==0)
       fish[i+1]=(fish[i]-1)*4/5;      
       else
     break;      
           }
     fish[0]+=5;
   }
         while(i=3);
   fish[0]-=5; for(i=0;i=4;i++)
   {
    coutfish[i]endl;
   }
  }