【李刚-21天通关Python-21】之 实操:定义计算N的阶乘的函数

【李刚-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])
    reduce()函数示意图
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

猜你喜欢

转载自blog.csdn.net/weixin_43796325/article/details/98623700