我的任务是仅使用lambda表达式实现factorial
函数。
这是我尝试过的
fact = lambda n: if n == 0 return 1 else ...
我被卡住了!
编辑: 修复if语句语法错误
fact = lambda n: 1 if n == 0 else ...
我又被卡住了。
如何做到?
答案 0 :(得分:4)
一种简单的方法是使用分配了lambda
的变量的名称作为递归调用代码的方式:
>>> fact = lambda n: 1 if n <= 0 else n * fact(n - 1)
>>> fact(10)
3628800
>>>
还有更复杂的解决方案,涉及将lambda
表达式传递到lambda
表达式或Y组合符。使用if ... else ...
声明已经注定了您的方法。 lambda
表达式只能包含其他表达式,不能包含语句,因此您需要使用... if ... else ...
表达式语法代替。