【练习】阶乘
项目简介
阶乘
知识模块
- Python 编程语言
知识点
- 分支语句-if
- 递归算法
- 函数返回值与参数处理
受众
- 初级测试开发工程师
- 初级Python开发工程师
作业要求
编写一个Python程序,使用递归算法,计算给定正整数n的阶乘。阶乘的定义是从1到n所有正整数的乘积。例如3的阶乘为123=6。
解题思路
-
当 n 等于 0 或 1 时,阶乘的值为 1。因为 0! 和 1! 都等于 1。
-
对于大于 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}")
代码讲解
-
定义了一个名为
factorial
的函数,该函数接受一个参数n
,表示要计算阶乘的正整数。 -
在函数内部,使用
if
语句来进行判断。如果n
的值为 0 或 1,那么阶乘的值都是 1。函数直接返回 1。 -
如果 n 大于 1,进入递归的情况。
return n * factorial(n - 1)
目的是计算n
乘以(n - 1)
的阶乘,即 (n - 1)!。这里的递归是关键,它会继续调用factorial
函数来计算(n - 1)
的阶乘,然后将结果与n
相乘,从而得到n!
的值。并将结果返回。 -
result = factorial(n)
:调用之前定义的factorial
函数,传递输入的值n
作为参数。并将其赋值给变量result
。