猴子吃桃课程设计_第1页
猴子吃桃课程设计_第2页
猴子吃桃课程设计_第3页
猴子吃桃课程设计_第4页
猴子吃桃课程设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计课程设计名称: 猴子吃桃问题 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 计算机专业课程设计任务书学生姓名专业班级学号题 目猴子吃桃问题课题性质其它课题来源自拟课题指导教师同组姓名主要内容有一群猴子摘了一堆桃子,他们每天吃当前桃子的一半且多一个,到了第10天就只余下1个桃子,用多种方法求出原来这群猴子共摘了多少个桃子。使用链表数据结构实现猴子吃桃问题的求解;使用递归实现猴子吃桃问题的求解。任务要求 1研究应用递归算法2应用数据结构基础知识进行实际问题求解与分析;3编程实现算法4具有良好的界面,操作方便灵活、简洁高效。5按要求撰写课程设计

2、报告和设计总结。参考文献1c程序设计(第二版),谭浩强,北京,清华大学出版社,1999.2visual c+实用教程(第一版),张荣梅、梁晓林,冶金工业出版社,2004.3c+实用教程(第一版),杨明军、董亚卓、汪黎,人民邮电出版社,2002.4数据结构(c语言版),严蔚敏,吴伟民,清华大学出版社,1997。 审查意见指导教师签字:教研室主任签字: 年 月 日 说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页1 需求分析int sum_fan(int n,int i) 子函数sum_fun,参数n和i接受主函数的参数 x和dayn = sum_fan(n+1)

3、*2,-i); 每一次都用(n+1)*2)的值去调用子函数本身sum = sum_fan(x,day); 调用子函数sum_fan,并把返回得结果赋给sum“前期工作”:构想源代码中各个步骤,为编写源程序准备。构思函数整体框架;1.首先定义好main函数;2.调用函数类型;3.编写源程序;“后期工作”:敲定程序后,检查程序是否健全。1.上机输入源程序;2.对源程序进行编译;3.对源程序进行调试;4.对源程序进行运行;2 概要设计首先,设第一天摘了x个桃子。然后,列出算术表达式:(x/2-1)/2-1)/2-1)/2-1.)=1,一共有9个除以2减一。接着, 从第九天分析,第9天的桃子是(1+1

4、)*2,第8天是(1+1)*2+1)*2,.一直到第一天。我尝试着用递归来思考。可以发现每一天的桃子得数量都是用前一天桃子的数量加上1之后再乘以2。于是可以把式子换成(n+1)*2 ,然后可以把具体问题留给在子函数处理,用(n+1)*2的结果再去调用子函数本身。这样就可以实现递归的嵌套了,最后再用主函数去调用子函数。3 运行环境(软、硬件环境)window nt/2003/xp4 开发工具和编程语言开发工具:vc+编程语言:c/c+5 详细设计#include#include#define null 0typedef struct linknode int data; struct linkn

5、ode *next;/链表指针node;node *head; /头结点int day;void main() int n;pp:do printf(t *n); printf(t *猴子吃桃问题的实现方法*n); printf(t *n);printf(t 1 数组实现n); printf(t 2 递归实现n); printf(t 3 链表实现n); printf(t 4 退出程序n); printf(t *n); printf(t请选择(1-4): bb); scanf(%d,&n); if(n4) printf(重新输入1或2或3n); goto pp;else switch(n) ca

6、se 1: printf(使用数组的方法); array();break; case 2: printf(使用递归的方法); digui();break; case 3: printf(使用链表的方法); creat(); print(); break; case 4: exit(0); while(n=1&n=0;i-)arri-1=2*(arri+1);printf(第%d天还剩桃子%dn,i+1,arri);return 0;int digui()int fun(int);int count;count=fun(1);printf(count=%dn,count);int fun(int

7、 day)if(day=11)return 1;elsereturn (fun(day+1)+1)*2;int creat()/创建链表 node *p,*s; int peaches=1;/第十天时只剩下一个桃子 day=11; head=(node*)malloc(sizeof(node); p=head;while(day0) s=(node*)malloc(sizeof(node);/分配存属空间 s-data=peaches;/用来存放结点数据 p-next=s; /把结点插入链表中 p=s; peaches=(peaches+1)*2;/第一天的桃子数是第二天桃子数加后的2倍; d

8、ay-; p-next=null; p=head; head=head-next;/使头指针指向头结点 free(p); /释放指针p return 0;int print()/输出从这十天每天的桃子数 int a; node *p; p=head;day=11;while(p&day0) printf(第%d天的桃子数:%d个n,day,p-data); p=p-next; day-;return 0;6 调试分析在这段代码的编写过程中我遇到了一些问题。我的问题有两个:来源:(/s/blog_43b943ab01009mf9.html) - 关于猴

9、子吃桃子得问题(递归算法)_王磊_新第一,在递归调用子函数本身时,没有找到一个方法去控制它调用的次数。第二,没有想到要用一个变量去保存它每一次调用本身后得结果,以至于无法返回到主函数解决第一个问题:设置一个变量day = 9 然后用放在调用子函数的第二个参数里面去控制子函数调用本身的次数。第二个问题的解决方法:在子函数里面用n 去保存递归算法返回的值。7 测试结果(小三黑体)程序运行结果如图1所示图1 程序运行结果1图2 程序运行结果2图3 程序运行结果3图4 程序运行结果4参考文献1.边肇祺,模式识别(第二版),北京:清华大学出版社,1988,25352. 李永忠,几种小波变换的图像处理技术,西北民族学院学报(自然科学版),2001.6,22(3),15183c程序设计(第二版),谭浩强,北京,清华大学出版社,1999.4visual c+实用教程(第一版),张荣梅、梁晓林,冶金工业出版社,2004.5c+实用教程(第一版),杨明军、董亚卓、汪黎,人民邮电出版社,2002.6数据结构(c语言版),严蔚敏,吴伟民,清华大学出版社,1997。 心得体会通过该课程设计,全面系统的理解了解了编译原理程序构造的 一般原理和一般原理和基本实现方法。把死板的课本知识变的生动有趣,激发了学习的积极性。把学过的计算机编程原理的知识强化,能够把课堂上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论