Hallo,
kann mir jemand hierbei weiterhelfen:
(lambda f: lambda n: f(f(f(n)))) (lambda x: x + 13) (3)
Warum kommt hier 42 raus?
Vielen Dank =)
Lambda-Ausdruck
Weil 3 + 13 + 13 + 13 = 42 ist? Das ist ja ein Puzzle und kein "ernsthafter" Code -- und Puzzles machen doch am meisten Spaß, wenn man sie selbst löst
Jedenfalls:
Versuch mal, den Code so aufzubereiten, dass die interne Struktur besser sichtbar wird. Dann liest du ihn erst von hinten nach vorne, bzw. oben nach unten (denn Einrückung bietet sich an) und dann im vorderen Ausdrücke von Innen nach außen. Es bietet sich an, darauf zu achten, wo 'f' und wo 'n' steht. Anschließend kannst du z.B. schrittweise die Argumente an der jeweils passenden Position einfügen/ersetzen.
Jedenfalls:
Versuch mal, den Code so aufzubereiten, dass die interne Struktur besser sichtbar wird. Dann liest du ihn erst von hinten nach vorne, bzw. oben nach unten (denn Einrückung bietet sich an) und dann im vorderen Ausdrücke von Innen nach außen. Es bietet sich an, darauf zu achten, wo 'f' und wo 'n' steht. Anschließend kannst du z.B. schrittweise die Argumente an der jeweils passenden Position einfügen/ersetzen.
Danke erstmal
(lambda f: lambda n: f(f(f(n)))) (lambda x: x + 13) (3)
Also ich wende 3 auf x + 13 an, bis dahin verstehe ich es
Die Funktion f definiert eine Funktion n, welche f 3x aufruft.
Aber so wäre das doch ein unendliches aufrufen von f?
Was verstehe ich hier nicht?
(lambda f: lambda n: f(f(f(n)))) (lambda x: x + 13) (3)
Also ich wende 3 auf x + 13 an, bis dahin verstehe ich es
Die Funktion f definiert eine Funktion n, welche f 3x aufruft.
Aber so wäre das doch ein unendliches aufrufen von f?
Was verstehe ich hier nicht?