一般的lambda表达式无法实现阶乘这一类算法,需要利用递归算法,以下是一个实例:
factorial = lambda n: 1 if n == 0 else n * factorial(n-1)
print(factorial(5)) # 输出 120
在lambda表达式中,函数调用自身,形成递归,传入参数后输出结果。
优点:代码清晰,简短,一般容易理解。
缺点:大数的阶乘会有性能问题,因为 Python 中递归调用的深度是有限制的。
如果需要计算大数的阶乘,最好使用循环实现。
以下是一个使用循环计算阶乘的例子:
def factorial(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
print(factorial(5)) # 输出 120
这个实现方式使用了循环计算阶乘,避免了递归调用的深度限制,并且在性能上也更加高效。
希望这些例子能够帮助你理解如何在 Python 中使用 lambda
表达式和普通函数计算阶乘。