迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中计算阶乘

作者:迹忆客 最近更新:2023/12/21 浏览次数:

一个数的阶乘是所有小于或等于这个数的正整数的乘积。例如,5 的阶乘是所有小于等于 5 的数字的乘积,即 5 * 4 * 3 * 2 * 1,等于 120。因此,数字 5 的阶乘是 120。

现在让我们写一个 Python 函数来计算一个数字的阶乘。在 Python 中,我们有两种方法可以写一个阶乘程序,一种是使用迭代法,另一种是使用递归法。


在 Python 中使用迭代法计算一个数的阶乘数

使用迭代方法的阶乘程序无非是在我们的程序中使用循环,如 for 循环或 while 循环。在 Python 中编写阶乘迭代程序时,我们必须检查三个条件。

  1. 给定的数字是负数。如果这个数字是负数,那么我们将简单地说,我们找不到阶乘,因为负数的阶乘不存在。
  2. 给定的数字是零。如果数字是零,那么我们将简单地打印 1,因为零的阶乘是 1
  3. 给定的数字是正数。如果数字是正数,那么我们只需要找到它的阶乘。
def factorial(num):
    if num < 0:
        print("Factorial of negative num does not exist")

    elif num == 0:
        return 1

    else:
        fact = 1
        while num > 1:
            fact *= num
            num -= 1
        return fact


num = 5

print("Factorial of", num, "is", factorial(num))

输出:

Factorial of 5 is 120

在 Python 中使用递归计算一个数字的阶乘

递归无非就是一次又一次地调用同一个函数。使用递归,我们可以编写更少的代码行,这将比我们使用迭代方法编写的代码更具可读性。

每当我们调用一个递归函数时,都会在内存中创建一个递归栈。这个递归栈有一个叫做程序计数器的东西,它可以跟踪递归函数执行完毕后下一条要执行的指令。

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


num = 5
print("Factorial of", num, "is", factorial(num))

输出:

Factorial of 5 is 120

使用 Python 中的 math.factorial() 函数计算一个数字的阶乘

你想用一行字就写出一个阶乘函数吗?你是否觉得不可能?有一种方法可以用一行代码写一个阶乘函数。可以通过 math 模块来实现。在 math 模块中,有一个 factorial 函数来计算一个数字的阶乘。

你必须从数学模块中导入这个函数,在你的程序中调用它,并传递你想计算的阶乘数。请看下面的例子。

from math import factorial

print("Factorial is", factorial(5))

输出:

Factorial is 120

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便