Code: Alles auswählen
# Y combinator
def Y(r): return (lambda f: f(f))(lambda f: r(lambda x: f(f)(x)))
Beispiele:
Code: Alles auswählen
# factorial
print Y(lambda f: lambda n: 1 if n == 0 else n * f(n - 1))(20)
# fibonacci
print Y(lambda f: lambda n: 1 if n < 2 else f(n - 1) + f(n - 2))(20)