资源描述:
《数据库课程设计格式参考》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、福建农林大学计算机与信息学院计算机类课程设计报告课程名称:程序设计方法学课程设计题目:阿克曼函数的递归实现正确性证明姓名:林振宏系:计算机专业:计算机科学与技术年级:04级学号:041150090指导教师:李小林职称:讲师2007年07月100福建农林大学计算机与信息学院计算机类课程设计结果评定评语:成绩:指导教师签字:任务下达日期:评定日期:目录1课程设计的目的12课程设计要求13课程设计报告内容13.1递归和递归条件13.2设计用例13.3Ackermann函数的C++实现23.4程序N-S图及流程图
2、33.5测试结果43.6程序验证64总结85附录(参考文献)8阿克曼函数递归实现的正确性证明1•课程设计的目的程序设计方法是编程的指导思想,决定了我们用什么样的方式组织编写程序,一个程序的成功与否完全由它决定;语言和坏境是编写程序的工具,程序由他们制造;而算法则是灵魂,是解决问题(处理数据)的方法步骤;而数据结构则是我们加工的对象,也是我们编写程序的根本目的。本课程设计的目的是使学牛学习并掌握综合运用《程序设计方法学》、《面向对象编程思想》及相关课程所学知识,分析和解决实际问题。通过实践,将课本上的知识加
3、以运用,培养良好的程序设计思维和编程习惯,提高程序设计的能力,将程序设计方法和编程思想良好地结合起來。2.课程设计的要求能综合运用《程序设计方法学》、《面向对象编程思想》及相关课程所学知识,解决实际问题,并且设计的软件有一定的可用性、健壮性。课程设计报告中应包括模块设计、调试分析、测试结果、附录等内容。课程设计完成后,提交课程设计报告。3.课程设计报告内容3.1递归和递归条件一个对象部分地由a己组成或按它a己定义的则称为递归。一个问题要采用递归方法来解决时,要符合下而三个条件:1.可以把要解决的问题转化为
4、一个新的问题,而这个新的问题的解法和原來的相同,只是所处理的对象有规律地递增或者递减。2.可以应用这个转化过程使问题得到解决3.必定要有一个明确的结束递归的条件3.2设计用例,x=0,y=o,x>0&y>0Ackermcinn函数:‘y+1Ack{x^y}='Ack(x-1,y)Ack(x-1,Ack(x,y-1))核心算法:intAck(intx,inty)if(x=0){returny+1;ielse{if(y=0){returnAck(xT,1);Ielse{returnAck(x-1,Ack(x,
5、y-1));!)I3.3Ackermann函数的C++实现创建两个文本文件,命名为input,txt和output,txt,Ackermann函数的两个参数从input文本取得输入,output文本用来存入运算结果。C++实现代码如下(.cpp文件):ttincludettincludeifstreamfin(〃input.txt〃);ofstreamfoul("output,txt/");usingnamespacestd;intAck(int,int);voi
6、dmain(){inta,b,z;fin>>a»b;if(a<0
7、
8、b<0){fout<=0!〃);exit(0);)z=Ack(a,b);fout<9、输出Errordata!Datamust>二0!11・输入0和1,输出计算结果为2<3Tinput.±»-t-记审*[―■output.t八记車*[―」[口]文件CF)摘辑CE)格式〔0)查看(V)帮助0O文件OF)编辑0E)格式(0)查看(V)粘助QOo1
10、2Ack(O,l)二l+l二2III.输入l和0,输出结果为2上4oii-tput--tx-t一i己畢#(50彳各式Ack(l,O)=Ack(l-1,l)=A(O,l)=l+l=2IV.输入l,2,输出结果为4文件GO編镉格式(o)査石CV)和助OO
11、QIS)_4OXl-tJ>l>-t.±X-t—'.JLojfea丟裨on満肖aS-椅式(o)杳看(V)^gfthao-•4Ack(1,2)二Ack(0,Ack(1,1))=Ack(0,Ack(0,Ack(l,0)))=Ack(0,Ack(0,Ack(0,1))=Ack(0,Ack(0,2)二Ack(0,3)二4以上可以看出,测试结果和预期计算结果相同。接下来证明本程序的正确性。3.6程序验证先说儿个概念。函数不动点:对于函数f