Raptor-阶乘的两种实现方法

20 篇文章 2 订阅

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

  • 26
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏雪无痕是个小疯子

您的鼓励将促使我的创作更有价值

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值