繁体   English   中英

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

[英]How to implement a recursive function using lambda expressions

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

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

我被卡住了!

编辑: 修复如果语句语法错误

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

我又被卡住了..

怎么做?

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

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

有更复杂的解决方案,包括将lambda表达式传递给lambda表达式或Y组合器。 使用if ... else ... 语句已经注定了您的方法。 lambda表达式只能包含其他表达式 ,不能包含语句 ,因此您需要使用... if ... else ... 表达式语法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM