欢迎来到天天文库
浏览记录
ID:1791735
大小:252.50 KB
页数:10页
时间:2017-11-13
《大数阶乘问题(c++课程设计)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、西安建筑科技大学课程设计(论文)课程设计(论文)课程名称:题目:求解1000的阶乘院(系):理学院专业班级:应数0801姓名:学号:081030107指导教师:2011年1月14日-10-西安建筑科技大学课程设计(论文)摘要计算数字的阶乘问题,是比较常见,而且比较重要的一种函数。其中计算一般较小的数字时,采用迭代法,这种方法简洁、方便。但是,在运算一些较大的数字的阶乘时,例如计算1000的阶乘,由于没有任何一个编程语言有一种变量或机制来储存1000!这么大的数,所以就会产生数字越界问题,也叫上溢。因此,如何计算大数的阶乘问题就是本文研究的重点。本文详细讨论了如何采用数组的方法计算原题,
2、从而避免数字越界问题。关键词:越界,数组,阶乘-10-西安建筑科技大学课程设计(论文)目录1.绪论·············································42.程序说明·········································42.1问题描述·······································42.2开发平台·······································42.3变量命名规则····································43.程序设计·······
3、·································53.1设计思路:·······································53.2设计难点及处理··································6-10-西安建筑科技大学课程设计(论文)4.结果及分析········································64.1运行结果·······································64.2结果分析········································74.3需要完
4、善的地方··································84.4心得体会········································85.参考文献·······················96.附录·············································10-10-西安建筑科技大学课程设计(论文)1.绪论在数学计算的很多领域中都涉及数字的阶乘问题,因此,数字的阶乘问题是十分常见且重要的一种函数。一般情况下,计算较小的数字的阶乘时,采用递归调用算法。这个是最容易想的,如果是1的阶乘,则返回1,其他的都返回n-1
5、的阶乘与n的积,循环调用即可。不过问题是即使用double来存放该值,由于double本身的精度、能存的数字大小所限,算不了太大的数的阶乘。因此,计算较大数字的阶乘时,一种简洁高效的算法的开发就显得十分紧迫和重要了。2.程序说明2.1问题描述:求解1000的阶乘2.2开发平台:MicrosoftVisualC++6.02.3变量命名规则numArr[]数组total数组元素的值rem余数i数组元素编号count数组元素需乘的数-10-西安建筑科技大学课程设计(论文)3.程序设计3.1设计思路:用numArr[]数组来存放阶乘的每一位数字,首先令数组的最后一位的数值为1,位数为1,然后将
6、每次相乘的乘积存回数组,并循环处理每个数组中超过10的数,若数值超过10,则需要进位,将位数加1,原来的数除以10,商数加前一位数的数值后存回前一位数的数组中,再将余数存回原来位数的数组中。例如,求12!12!=11!*1211!=3991680012!=479001600-10-西安建筑科技大学课程设计(论文)3.2设计难点及处理由于位数的限制,没有任何编程语言,可以存储例如1000!这个乘法结果的量。解决的方法是采用数组来存储。4.结果及分析4.1运行结果-10-西安建筑科技大学课程设计(论文)4.2结果分析通过使用数组的方法,可以有效避免数字越界问题,存储较大数字的阶乘,得到准确
7、的计算结果。4.3需要完善的地方程序的编写有待进一步的精简,本程序可以解决1000的阶乘问题,但对于特别巨大的数字的阶乘问题还是无法解决。并且不能用迭代法计算较小数的阶乘。可在此基础上编写万能阶乘计算程序。4.4心得体会通过这次的课程设计,我查阅了很多资料,并和同学们一起讨论,使我学会了独立自学,以及如何互相讨论学习,增强了我对于C++语言的掌握,和编写程序的能力。使我受益匪浅。5.参考文献 [1](美)BjarneStrou
此文档下载收益归作者所有