python - lambda 函数可以在 Python 中递归调用自身吗?

标签 python recursion lambda y-combinator

常规函数可以在其定义中包含对自身的调用,这没问题。我不知道如何使用 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/

相关文章:

c# - 可以在 linq to sql 中使用 lambda 表达式吗?

java - 类似的 C# .net lambda 搜索 java 7 通用列表

python - 如何在多元线性回归模型中找到学生化残差和 PRESS 残差

python - 当要并行化的函数在不同的文件中时,并行代码不起作用

javascript - 在 JavaScript 中封装尾部调用优化的实用程序?

ruby - 是否有与 Perl 的 Data::Rmap 等效的 Ruby?

c# - 表达式——如何重用业务逻辑?如何将它们结合起来?

c++ - 我如何在 Symbian 上检索 SMS 收件箱消息,最好使用 j2me?

python - 如果 RAM 不是问题,是逐行读取更快还是将所有内容读入 RAM 并访问它? - Python

java - java的二叉树前序、后序和中序