阶乘的三种实现方式

以下三种方式分别采用了不同的方法,第一种是最容易理解的,第二种是最pythonic的,而第三种则是易用性最高的。第三种直接定义一个阶乘函数,随时都可以调用,从而得到不同值。

方法一:

普通方法:

a = 1
n = 5
for i in range(1,n+1):
    a = a * i
print(a)
20

方法二:

reduce()函数:

from functools import reduce
n = 5
print(reduce(lambda x,y:x*y,range(1,n+1)))
120

reduce(function, iterable[, initializer]) 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

>>>def add(x, y) :            # 两数相加
...     return x + y
>>> reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
15
>>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
15

注意:在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数

方法三:

采用函数的递归:

def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return (n*factorial(n-1))

a = factorial(5)
print(a)
120

需要注意的是,函数的递归要有终止机制,否则会一直递归下去。如上个程序中给定了if判断语句来终止循环的进行。

参考地址:
https://blog.csdn.net/geerniya/article/details/77414427

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 使用for循环: ``` n = int(input("请输入n:")) factorial = 1 for i in range(1, n+1): factorial *= i print("%d的阶乘是:%d" % (n, factorial)) ``` 2. 使用while循环: ``` n = int(input("请输入n:")) factorial = 1 i = 1 while i <= n: factorial *= i i += 1 print("%d的阶乘是:%d" % (n, factorial)) ``` 3. 使用递归函数: ``` def factorial(n): if n == 0: return 1 else: return n * factorial(n-1) n = int(input("请输入n:")) result = factorial(n) print("%d的阶乘是:%d" % (n, result)) ``` ### 回答2: 计算n的阶乘是指将n与n-1,n-2,...,2,1相乘的结果。 一种循环编程计算n的阶乘的方法是使用for循环。假设n的值保存在变量num中,则可以通过以下代码计算n的阶乘: ```python result = 1 for i in range(1, num+1): result *= i print(result) ``` 另一种循环编程计算n的阶乘的方法是使用while循环。同样假设n的值保存在变量num中,可以通过以下代码计算n的阶乘: ```python result = 1 i = 1 while i <= num: result *= i i += 1 print(result) ``` 第三种循环编程计算n的阶乘的方法是使用递归。递归是一种函数调用自身的方式,可以通过以下代码计算n的阶乘: ```python def factorial(n): if n == 0 or n == 1: return 1 else: return n * factorial(n-1) num = 5 # 假设n的值为5 result = factorial(num) print(result) ``` 以上是三种循环编程计算n的阶乘的方法。使用for循环和while循环是迭代的方式,而递归是通过函数自身的调用来实现计算。每种方法都可以得到相同的结果。 ### 回答3: 首先需要明确的是,阶乘是指从1乘到n的连续乘积,即n! = 1*2*3*...*n。 我们可以用三种不同的循环来编程计算n的阶乘: 1. for循环 使用for循环可以非常简单地计算n的阶乘。首先,我们将结果初始化为1,然后通过循环从1到n,将当前的数字乘以结果,并更新结果的值。具体代码如下: ```python def factorial(n): result = 1 for i in range(1, n+1): result *= i return result ``` 2. while循环 使用while循环也可以计算n的阶乘。我们也需要将结果初始化为1,然后通过循环不断将当前的数字乘以结果,并更新结果的值。具体代码如下: ```python def factorial(n): result = 1 i = 1 while i <= n: result *= i i += 1 return result ``` 3. 递归 除了使用循环,我们还可以使用递归的方式来计算n的阶乘。递归是指一个函数调用自己的过程。对于阶乘来说,我们可以将n的阶乘定义为n乘以(n-1)的阶乘,依次递归下去,直到n为1时返回1。具体代码如下: ```python def factorial(n): if n <= 1: return 1 else: return n * factorial(n-1) ``` 以上就是用三种循环编程计算n的阶乘的方法。无论使用哪种方法,它们都会在n的范围内进行连续乘法运算,直到计算出n的阶乘的结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值