Skip to content

【练习】阶乘

项目简介

阶乘

知识模块

  • Python 编程语言

知识点

  • 分支语句-if
  • 递归算法
  • 函数返回值与参数处理

受众

  • 初级测试开发工程师
  • 初级Python开发工程师

作业要求

编写一个Python程序,使用递归算法,计算给定正整数n的阶乘。阶乘的定义是从1到n所有正整数的乘积。例如3的阶乘为123=6。

解题思路

  1. 当 n 等于 0 或 1 时,阶乘的值为 1。因为 0! 和 1! 都等于 1。

  2. 对于大于 1 的正整数 n,n! 等于 n 乘以 (n-1)!。我们可以使用递归调用来计算 (n-1)!,然后将结果乘以 n,从而得到 n!。

完整代码

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

n = int(input("请输入要计算阶乘的正整数:"))
result = factorial(n)
print(f"{n}的阶乘是:{result}")

代码讲解

  1. 定义了一个名为 factorial 的函数,该函数接受一个参数 n,表示要计算阶乘的正整数。

  2. 在函数内部,使用 if 语句来进行判断。如果 n 的值为 0 或 1,那么阶乘的值都是 1。函数直接返回 1。

  3. 如果 n 大于 1,进入递归的情况。return n * factorial(n - 1) 目的是计算 n 乘以 (n - 1) 的阶乘,即 (n - 1)!。这里的递归是关键,它会继续调用 factorial 函数来计算 (n - 1) 的阶乘,然后将结果与 n 相乘,从而得到 n! 的值。并将结果返回。

  4. result = factorial(n):调用之前定义的 factorial 函数,传递输入的值 n 作为参数。并将其赋值给变量 result