卖桃子
卖桃子
问题:
一筐桃子,第一天买掉一半又吃掉一个;第二天买掉余下的一半又吃掉一个;
第三天,第四天,第五天以后都照此办理,最后剩下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< } }
- 上一篇:马踏棋盘问题
- 下一篇:罗云彬VxD教程--虚拟8086模式的内存管理





