使用指定變數的遞迴 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