【李刚-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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值