如何使用 lambda 表达式实现递归函数
How to implement a recursive function using lambda expressions
我的任务是仅使用 lambda 表达式实现 factorial
函数。
这是我尝试过的
fact = lambda n: if n == 0 return 1 else ...
我卡住了!
编辑:
修复 if 语句语法错误
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 ...
expression 语法代替。
我的任务是仅使用 lambda 表达式实现 factorial
函数。
这是我尝试过的
fact = lambda n: if n == 0 return 1 else ...
我卡住了!
编辑: 修复 if 语句语法错误
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 ...
expression 语法代替。