【李刚-21天通关Python-21】之 实操:定义计算N的阶乘的函数
方法一:使用循环
- 控制循环计数器从1循环到N
- 让循环计数器与前一个结果相乘,知道循环计数器等于N
def fract (n):
r = 1
if n < 1:
print("n不能小于1")
return
else:
for i in range(1, n+1):
r *= i
return r
print(fract(5)) # 120
print(fract(6)) # 720
方法二:递归
- N的阶乘等于N乘以N-1的阶乘
- N为1时,N的阶乘为1,保证递归有结束点
def fract (n):
if n < 1:
print("n不能小于1")
return
elif n == 1:
return 1
else:
# 递归:函数里调用函数自身
return fract(n) = fract(n-1) * n
print(fract(5)) # 120
print(fract(6)) # 720
方法三:使用 reduce 函数
- Python在functools模块提供了 reduce() 函数,该函数使用指定函数对序列对象进行累积
- 该函数的用法:reduce(function, sequence[, initial])
import functools
def fn (x, y):
return x * y
def fract (n):
if n < 1:
print("n不能小于1")
return
else:
return functools.reduce(fn, range(1, n+1))
# fn函数的另一种表示方法:lambda x, y: x * y
print(fract(5)) # 120
print(fract(6)) # 720