Raptor中阶乘的两种实现方法
来源:互联网 发布:电脑编程自学 编辑:程序博客网 时间:2024/06/15 15:03
1.问题描述
n的阶乘定义为n*(n-1)*(n-2)*…*3*2*1,记为n!。请编写程序计算一个数的阶乘(特殊的 0!=1)
2.思路分析
这道题有两种方法,这两种方法源于对这个阶乘定义的使用,下面我们来看看差别。
a) 递归调用的方法
这种方法是利用了阶乘这个定义的自身,我们假定f(n)是求n的阶乘的一个函数关系,f(n-1)就是求(n-1)!,…,f(1)就是求1!, 1!=1我们已知。因此我们有
这就相当于当我们调用f(n)的时候,这个函数反复调用了这个函数本身,只不过每次调用传入函数的参数不同,一直调用到f(1),因为f(1)是一个已知的数值1,简单的来写就是:
以上是数学上的分析这个阶乘定义的两项之间的关系,应用到具体的程序中,我们需要编写子程序来代表函数关系f(n)。
注意:
Raptor中定义子程序要把模式切换为中级模式,如下图所示:
b) 非递归调用的方法
非递归的方法也比较好理解,显然这个需要用到循环结构,我们定义循环变量i从1到n,然后定义一个保存结果的变量result初始值为1,循环的过程中有result=result*i这样的操作来表示每一步我们都把i乘起来了,循环结束后result就是我们想要的结果。
3.结果展示
a) 递归的实现结果
分别计算10!,6!,3!
b) 非递归的实现结果
分别计算10!,7!,4!
4.流程图
a) 递归流程图
主程序:
子程序:
b) 非递归流程图
以上就是Raptor中两种方法求阶乘的详细内容,这篇博客只提供教学,再不会编程序的话需要程序请联系QQ545030769
阅读全文
0 0
- Raptor中阶乘的两种实现方法
- 求阶乘的两种方法
- 求阶乘的两种方法
- 黑马程序员——阶乘的两种实现方法及水仙花数的打印
- 求N!的C的两种算法实现,求阶乘.从失败中寻找自我
- java中实现多线程的两种方法的区别
- 在网页中实现细线边框的两种方法
- JAVA中实现四舍五入的两种方法
- 网页中实现Flash透明的两种方法
- jsp中实现参数隐藏的两种方法
- 在Java中实现线程的两种方法
- Oracle中spool命令实现的两种方法比较
- 调用Action中其他方法的两种实现
- Oracle中spool命令实现的两种方法比较
- Android中button实现onclicklistener事件的两种方法
- Oracle中spool命令实现的两种方法比较
- JAVA中实现线程的两种方法
- 在servlet中实现页面跳转的两种方法
- 放大电路1
- Python安装过程
- CodeForces877D【BFS】
- python 之socket
- 二叉搜索树
- Raptor中阶乘的两种实现方法
- 总结!python数据结构排序算法的实现
- 趋势与新高的实战研究
- Android 实现指南针效果
- Linux基础指令学习02
- 覆巢之下无完卵
- Hexo + GitHub搭建个人博客 --- Intermediate Edition
- laravel 课程学习系列二----------------第二章.PHP框架安装之Laravel
- 矩阵快速幂法+斐波那契数列余数