有没有办法如何编写包含lamba的递归函数? 可以使用lambda重写它。
def factorial(x):
if x <= 1:
return 1
return x * factorial(x - 1)
print(factorial(5))
答案 0 :(得分:4)
否,或者至少没有将函数分配给变量,然后使用该名称来调用它。但是你仍然不能在函数中使用任何语句。
无论如何,不要这样做。除了不能包含语句的限制外,lambda
函数完全与Python中的普通def
函数完全相同。
在Python中使用lambda的唯一原因是,如果只需要一个返回某个值的简单callable,就可以避免定义一个命名函数。
答案 1 :(得分:2)
是的,这个具体案例是可能的。
>>> factorial = lambda x: 1 if x < 1 else x * factorial(x - 1)
>>> factorial(5)
120
我不会推荐它。标准函数定义对我来说似乎更具可读性。
答案 2 :(得分:2)
>>> l = lambda i: 1 if i<=1 else i * l(i-1)
>>> l(5)
120
>>> 5*4*3*2*1
120