一、定义
整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,0的阶乘为1。即:n!=1×2×3×...×n
二、方法说明
python求整数n阶乘的方法:
1、使用math模块factorial(n)来计算n的阶乘
2、for循环语句
3、使用reduce()函数来求阶乘
4、通过递归函数来求阶乘
三、求解方法
(一)math.factorial(n)求解法
(1)math库是python提供的内置数学类函数库,math库仅支持整数和浮点数运算,一共提供了4个数字常数和44个函数。其中factorial(n)——以一个整数返回 n 的阶乘。
import math
n = 5 # 需要计算阶乘的数字
factorial = math.factorial(n)
print(factorial) # 输出结果为 120
(二)for循环语句
循环算法是另一种常用的算法思想,它可以通过循环迭代来解决问题。对于n的阶乘,可以使用循环算法来进行计算。具体来说,可以使用一个循环变量i从1到n,依次将i与前面的乘积相乘。
def fact(n):
s = 1
for i in range(1,n+1):
s*= i
return s
print(fact(5))
(三)reduce函数
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
reduce() 函数语法:
reduce(function, iterable[, initializer]),其中:
- function -- 函数,有两个参数
- iterable -- 可迭代对象
- initializer -- 初始参数,可选
from functools import reduce
n = 5
print(reduce(lambda x,y:x*y,range(1,n+1)))
这里我们用的是lambda表达式(匿名函数),带两个参数x、y,x就是每次操作后的返回值,参数y就是代表集合range(1,n+1)中的元素。
(四)递归调用
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
递归算法是一种常用的算法思想,它可以通过将一个问题分解为若干个子问题来解决。对于n的阶乘,使用递归算法来进行计算。具体来说,可以将n的阶乘拆分为n×(n-1)的阶乘,而(n-1)的阶乘又可以继续递归拆分。
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return (n*factorial(n-1))
a = factorial(5)
print(a)
函数的递归要有终止机制,否则会一直递归下去。如上个程序中给定了if判断语句来终止循环的进行。