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

2024-04-19 15:48:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我卡住了!你知道吗

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

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

我又卡住了。。你知道吗

怎么做?你知道吗


Tags: lambda函数编辑returnif表达式语句else
1条回答
网友
1楼 · 发布于 2024-04-19 15:48:09

一种简单的方法是使用分配给lambda的变量的名称作为递归调用代码的方式:

>>> fact = lambda n: 1 if n <= 0 else n * fact(n - 1)
>>> fact(10)
3628800
>>> 

有更复杂的解决方案涉及将lambda表达式传递给lambda表达式或Y-组合子。使用if ... else ...语句已经注定了您的方法的失败。lambda表达式只能包含其他表达式,而不能包含语句,因此需要改用... if ... else ...表达式语法。你知道吗

相关问题 更多 >