




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计(论文)课程名称: 题 目: 求解1000的阶乘 院 (系): 理学院 专业班级: 应数0801 姓 名: 学 号: 081030107 指导教师: 2011年 1 月 14 日摘要计算数字的阶乘问题,是比较常见,而且比较重要的一种函数。其中计算一般较小的数字时,采用迭代法,这种方法简洁、方便。但是,在运算一些较大的数字的阶乘时,例如计算1000的阶乘,由于没有任何一个编程语言有一种变量或机制来储存1000!这么大的数,所以就会产生数字越界问题,也叫上溢。因此,如何计算大数的阶乘问题就是本文研究的重点。本文详细讨论了如何采用数组的方法计算原题,从而避免数字越界问题。关键词:越界,数组,
2、阶乘目录1.绪论············································· 42.程序说明··
3、183;······································ 42.1问题描述 ·········
4、3;·····························42.2开发平台 ···················&
5、#183;···················42.3变量命名规则····························
6、83;·······43.程序设计 ········································ 53.1设计
7、思路:·······································53.2设计难点及处理········
8、3;·························64.结果及分析·······················
9、183;················64.1运行结果 ································
10、;·······64.2结果分析········································74.3需要完善的
11、地方··································84.4心得体会··············
12、183;·························85.参考文献·······················9
13、6.附录·············································101.绪论在数学计算的很多领域中都涉及数字的阶乘问
14、题,因此,数字的阶乘问题是十分常见且重要的一种函数。一般情况下,计算较小的数字的阶乘时,采用递归调用算法。这个是最容易想的,如果是1的阶乘,则返回1,其他的都返回n-1的阶乘与n的积,循环调用即可。不过问题是即使用double来存放该值,由于double本身的精度、能存的数字大小所限,算不了太大的数的阶乘。因此,计算较大数字的阶乘时,一种简洁高效的算法的开发就显得十分紧迫和重要了。2.程序说明2.1问题描述:求解1000的阶乘2.2开发平台:Microsoft Visual C+ 6.02.3变量命名规则numArr 数组total 数组元素的值rem 余数i 数组元素编号count 数组元素
15、需乘的数3.程序设计3.1设计思路:用numArr数组来存放阶乘的每一位数字,首先令数组的最后一位的数值为1,位数为1,然后将每次相乘的乘积存回数组,并循环处理每个数组中超过10的数,若数值超过10,则需要进位,将位数加1,原来的数除以10,商数加前一位数的数值后存回前一位数的数组中,再将余数存回原来位数的数组中。例如,求12!12! = 11!* 12 11! = 39916800 12! = 4790016003.2设计难点及处理由于位数的限制,没有任何编程语言,可以存储例如1000!这个乘法结果的量。解决的方法是采用数组来存储。4.结果及分析4.1运行结果4.2结果分析通过使用数组的方法
16、,可以有效避免数字越界问题,存储较大数字的阶乘,得到准确的计算结果。4.3需要完善的地方程序的编写有待进一步的精简,本程序可以解决1000的阶乘问题,但对于特别巨大的数字的阶乘问题还是无法解决。并且不能用迭代法计算较小数的阶乘。可在此基础上编写万能阶乘计算程序。4.4心得体会通过这次的课程设计,我查阅了很多资料,并和同学们一起讨论,使我学会了独立自学,以及如何互相讨论学习,增强了我对于C+语言的掌握,和编写程序的能力。使我受益匪浅。5.参考文献 1 (美) Bjarne Str
17、oustrup 著. C+程序设计语言(特别版). ( 裘宗燕 ).北京: 机械工业出版社,2002.1251882 何渝编 著.计算机常用数值算法与程序M.北京:人民邮电出版社,2003.731253郑丽 著.C+语言程序设计(第4版)M.北京:清华大学出版社,2010.1882484龚志祥 著.Visual C+编程实例与技巧集粹M.北京:兵器工业出版社,2004.2653125(美)Barbara Moo, Andrew Koening 著.C+沉思录.(梁实秋).北京:人民邮电出版社,2008.861376.附录核心源程序:#include<iostream.h>#incl
18、ude<conio.h>void main()clrscr();int numArr3000;/ Approximately , size of array depends on size of total,rem=0,count;/rem use to save remainder of division(Carry Number).register int i;for(i=0;i<3000;i+)numArri=0;/set all array on NULL.i=2999;/start from end of array.numArr2999=1;for(count=2;count<=1000;count+)/Refer to my article for m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 渔业养殖技术交流及产品销售合同
- 农业种植园区设施建设及维护合同
- 传媒行业媒体曝光及社会影响证明书(5篇)
- 网络游戏社区管理与维护方案
- 网络信息安全与数据保护策略及实施方案
- 特色养殖产业发展战略合作合同
- 品味建筑之美2025年考试试题及答案
- 2025届中考英语复习第一篇语言基础知识第1课七上Units1-5课后练习
- 市政学学科发展简史试题及答案
- 行政管理视角下市政学的理论评估试题及答案
- 归档文件目录
- 2022年四川省绵阳市中考英语试题及参考答案
- 防疫小组人员名单
- 眼部健康检测与分析课件
- 偏心块振动式土壤夯实机的结构设计说明
- 专业硕士学位论文修改报告(二)
- 苏州市建设工程造价计价解释
- 主题班会《坚定信念--放飞理想》
- 煤矿机电设备春季预防性检修计划
- S771(一) 水力循环澄清池
- 高密度电法探测及数据处理解释--答辩
评论
0/150
提交评论