使用指定变量的递归 Lambda

创建递归 lambda 函数的一种方法包括将函数赋值给变量,然后在函数本身内引用该变量。一个常见的例子是递归计算数字的阶乘 - 如下面的代码所示:

lambda_factorial = lambda i:1 if i==0 else i*lambda_factorial(i-1)
print(lambda_factorial(4)) # 4 * 3 * 2 * 1 = 12 * 2 = 24

代码说明

lambda 函数通过其变量赋值传递一个值(4),它评估它并返回 1 如果它是 0 或者它返回当前值(i)*另一个计算的 lambda 函数的值 - 1(i-1 )。这一直持续到传递的值减少到 0(return 1)。一个可视化为:

http://i.stack.imgur.com/uitTM.jpg