如何使用lambda表达式实现递归函数

问题描述 投票:0回答:1

我的任务是仅使用lambda表达式实现factorial函数。这是我尝试过的

fact = lambda n: if n == 0 return 1 else ...

我被卡住了!

编辑:修复if语句语法错误

fact = lambda n: 1 if n == 0 else ...

我又被卡住了..

怎么做?

python python-3.x recursion factorial
1个回答
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 ...表达式语法。

© www.soinside.com 2019 - 2024. All rights reserved.