n!非递归算法的设计与实现.doc
《n!非递归算法的设计与实现.doc》由会员分享,可在线阅读,更多相关《n!非递归算法的设计与实现.doc(16页珍藏版)》请在沃文网上搜索。
1、摘 要设计了一个用非递归算法实现n!的软件,该软件具有计算从1到999之间整数的阶乘的运算的功能。本计算器采用VC+作为软件开发环境,采用数组存储运算的结果,用栈输出运算结果,用递推法实现了整数的阶乘运算,界面清晰,易于为用户所接受。关键词:n!; 非递归;数组;栈目 录1 课题描述12 需求分析23 概要设计34 详细设计45 程序编码86 程序调试与测试107 结果分析128 总结13参考文献141 课题描述 尽管递归算法是一种自然且合乎逻辑的解决问题的方式,但递归算法的执行效率通常比较差。因此在求解许多问题时常采用递归算法来分析问题,用非递归方法来求解问题;另外一些程序不支持递归算法来求
2、解问题,所以我们都会用非递归算法来求解问题。本次课程设计主要内容是:用非递归算法实现n!的计算,由于计算机中数据的存储范围有限,而又要求出尽可能大的n的阶乘的值,用数组构造n的运算结果的存储结构,用栈的存储方式,最后输出n!的运算结果。本次课程设计的目的是:通过本次课程设计,可以使大家了解缓存中数据的存储范围,提高自学能力,增强团队合作意识。第 1 页2 需求分析 本次n!非递归算法的课程设计中主要用到的知识有:数组、函数、栈,选择条件中的结构语句(ifelse),和循环结构语句中的语句while()语句、dowhile()语句和for()语句,选择语句if的运用。 对n!的非递归的算法,主要
3、是运用非递归的算法实现n的阶乘。 限制条件: (1).要求的n必须是整数; (2). n的范围; (3). 数据类型和表数范围。第 14 页3 概要设计递归和非递归算法是相通的,递归是一种直接或间接调用自身的算法,而非递归不调用自身函数递推采用的是递归和归并法,而非递推只采用递归法。递推法一般容易溢出,所以一般都采用递推法分析,而用非递推法设计程序。将n定义为float型,便于查看n是否为整数;本次试验分为两个模块: (1).当n小于都等于12时,实现阶乘的模块m(n): 直接用sum*=i;实现求n的阶乘,相对简单,容易就算。 (2).当n大于12时,如果用long型结果就会溢出,所以实现阶
4、乘需调用的模块f(n): 采用数组存放计算的结果,用队列输出运行结果。由于计算结果较大,将结果除以数组最大存储位数,将高位结果存放在数组的起始地址上,将低位的结果存放在数组的末端地址上,最后采用队列输出运行结果。 (3).模块调用关系如图3.1所示是否n12f(n)m(n)主函数图3.1 模块调用图 4 详细设计4.1定义存储结构和部分代码#include#define N 10000 /*12!=479001600;*/ /定义数组的长度为10000 #define size 100000 /定义size,用于规定数组的最大存储位数 void f(float n) /当n大于12时调用函数f
5、()long int aN,i,j,length,k,up; /定义变量 a,i,j,length,k,up void m(float n) /当n小于等于12时调用函数m() long int i; /定义变量i int sum; /定义变量sum,用于存放求得阶乘的结果void f(float n) long int aN,i,j,length,k,up; /i,j为计数器,length为数组存储的长度 a0=1600;a1=4790;length=2; /12!=479001600,初始化f0和f1以便于求解大于12的阶乘 for(j=13;j=n;j+) for(k=0,up=0;kl
6、ength;k+) ak*=j; for(k=0;k=0;i-) /将运算结果的第二个最高位到最低位的值输出 printf(%d,ai); 4.2 流程图主函数流程图见图4.1 图4.1 主函数流程图子函数f(n)的流程图见图4.2图4.2 子函数 f(n)的流程图子函数m(n)的流程图见图4. 3图4. 3子函数m(n)的流程图5 程序编码#include#define N 10000 /*12!=479001600;*/ /定义数组的存储单元数#define size 100000 /定义size,用于求解数组的最大存储位数void f(float n) long int aN,i,j,l
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 递归 算法 设计 实现