专业编程基础技术教程

网站首页 > 基础教程 正文

详解在Python中使用多种方法计算数的阶乘

ccvgpt 2024-11-22 11:18:23 基础教程 1 ℃

阶乘是对于正整数 n,是所有小于或等于n的正整数的乘积。用 n! 表示。

例如:5!=5*4*3*2*1

详解在Python中使用多种方法计算数的阶乘

  • 使用迭代计算数字的阶乘
  • 使用递归计算数字的阶乘
  • 使用math.factorial()函数计算数字的阶乘
  • 使用scipy.special模块的factorial()函数

使用迭代计算数字的阶乘

使用迭代方法计算阶乘,在程序中使用循环解决。

def fact(n): 
    if n<0: 
        print("负数不存在阶乘!")
    elif n==0: 
        return 1
    else:
        f=1
        for i in range(1,n+1):
            f=f*i
        return f 
n=int(input("请输入:"))
print(n,"的阶乘是:",fact(n)) 

1.如果数为负数,找不到阶乘,因为负数的阶乘不存在。

2.如果数字为零,那么直接返回1,因为零的阶乘是1。

3.如果数是正数,迭代循环计算阶乘。

使用递归计算数字的阶乘

使用递归,我们可以编写更少的代码,这将比使用迭代方法编写的代码更简练,更易于理解。

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

n=int(input("请输入:"))
print(n,"的阶乘是:",fact(n))

使用math.factorial()函数计算数字的阶乘

更简便计算阶乘的方法就是直接使用阶乘函数。可以通过使用math数学模块来完成。在math模块内部,有一个阶乘函数factorial()来计算数字的阶乘。必须导入math模块来使用此函数,在程序中调用它并传递要计算阶乘的数字。

from math import factorial
n=int(input("请输入:"))
print(n,"的阶乘是:",factorial(n))

使用scipy.special模块的factorial()函数

除了math模块,还有其他第三方库提供现成的阶乘函数,比如

scipy.special模块的factorial()函数。

语法格式:

scipy.special.factorial(n,exact=False)

参数:

n: 整数或序列

exact=False 返回浮点数

exact=True 返回整数

scipy.special模块的factorial()函数不但能计算单个数值的阶乘,还能计算列表、集合等多个数值的阶乘。

from scipy.special import factorial
print(factorial(4, exact=False))
print(factorial(4, exact=True))

#输出
24.0
24

#计算列表的阶乘
from scipy.special import factorial
n=[5,3,2]
print(factorial(n, exact=False))
print(factorial(n, exact=True))

#输出
[120. 6. 2.]
[120 6 2]

感谢阅读,关注我,精彩继续!

Tags:

最近发表
标签列表