卖桃子

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

卖桃子

问题:

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

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

解答:

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

#include <iostream.h>

void main()

{

int i,remaining=1,day;

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

cin>>day;

cout<<endl;

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

{

remaining=2*remaining+2;

}

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

cout<<remaining<<endl;

}

另外一个相似的问题:

递推捕鱼的问题

问题:

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

{

cout<<fish[i]<<endl;

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航