Y-Kombinator in Python

Code-Stücke können hier veröffentlicht werden.
Antworten
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mir war gerade danach... :)

Code: Alles auswählen

# Y combinator
def Y(r): return (lambda f: f(f))(lambda f: r(lambda x: f(f)(x)))
Der Y-Kombinator ist eine Funktion, die auf eine Funktion angewandt wird, die eine nicht-rekursive Funktion liefert und diese Funktion dann rekursiv macht.

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)
Stefan
Antworten