问题描述
我想使用 python lambda 函数计算一个数字的阶乘,无需递归。
我没有使用 lamda 函数
def factorial_number(num):
fact = 1
while(num>=1):
fact = num* fact;
num = num-1
return fact
factorial_number(5)
我在没有递归的情况下尝试了以下代码(使用 lambda)。
factorial_number = lambda num : 1 while(num>=1) fact = fact*num num = num-1 return fact
上面的代码不起作用。
错误:
File "<ipython-input-1-62f7b66fbfd2>",line 1
factorial_number = lambda num : 1 while(num>=1) fact = fact*num num = num-1 return fact
^
语法错误:无效语法
但我想使用 lamda 函数来实现,没有内置函数和递归方法。以便我可以了解更多如何有效地使用 Lamba 函数。
请帮我写代码。
解决方法
def factorial(n):
t = 1
for i in range(n,1,-1):
t *= i
return t
>>> factorial(4)
24
,
您可以使用functools.reduce()
from functools import reduce
num = int(input('Enter number: '))
fact = lambda num: reduce(lambda x,y: x * y,range(1,num+1))
print(f'{num}! = {fact(num)}')
,
您可以简单地使用 math.factorial。
import math
fctrl = lambda: math.factorial(x)
或
from math import factorial
fctrl = lambda: factorial(x)