常规函数可以在其定义中包含对自身的调用,这没问题。我不知道如何使用 lambda 函数来做这件事,但原因很简单,lambda 函数没有名称可以引用。有没有办法做到这一点?怎么样?
最佳答案
我能想到的唯一方法就是给函数命名:
fact = lambda x: 1 if x == 0 else x * fact(x-1)
或者,对于早期版本的 python:
fact = lambda x: x == 0 and 1 or x * fact(x-1)
更新:使用其他答案的想法,我能够将阶乘函数楔入一个未命名的 lambda:
>>> map(lambda n: (lambda f, *a: f(f, *a))(lambda rec, n: 1 if n == 0 else n*rec(rec, n-1), n), range(10))
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
所以这是可能的,但不是很推荐!
关于python - lambda 函数可以在 Python 中递归调用自身吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/481692/