龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

卖桃子

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
卖桃子 问题: 一筐桃子,第一天买掉一半又吃掉一个;第二天买掉余下的一半又吃掉一个; 第三天,第四天,第五天以后都照此办理,最后剩下1个,问筐中共有多少个桃子. 解答:

卖桃子

 问题:

   一筐桃子,第一天买掉一半又吃掉一个;第二天买掉余下的一半又吃掉一个;

   第三天,第四天,第五天以后都照此办理,最后剩下1个,问筐中共有多少个桃子.

 解答:

  用递归的方法求解,源程序如下:

  #include

  void main()

  {

   int i,remaining=1,day;

     cout<<"请输入卖桃子的天数:"<

   cin>>day;

   cout<

   for(i=1;i<=day;i++)

   {

   remaining=2*remaining+2;

   }

   cout<<"原有桃子的总数为:"<

   cout<

   }

另外一个相似的问题:

递推捕鱼的问题

问题:

  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

  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++)

   {

   cout<

   }

  }

  

精彩图集

赞助商链接