Простой подход - использовать имя переменной, которой вы присваиваете 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 .