Created
April 6, 2011 23:21
-
-
Save pcalcado/906744 to your computer and use it in GitHub Desktop.
Ableitung der y-Kombinator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;Ableitung der y-Kombinator | |
(use 'midje.sweet) | |
(fact "direkte Rekursion" | |
(defn fakultät [n] | |
(if (> 2 n) | |
1 | |
(* n (fakultät (dec n))))) | |
(fakultät 5) => 120) | |
(fact "indirekte Rekursion" | |
(defn fakultät [f n] | |
(if (> 2 n) | |
1 | |
(* n (f f (dec n))))) | |
(fakultät fakultät 5) => 120) | |
(fact "beseitigung freie Variable" | |
(defn fakultät [n] | |
(let [f (fn [f-prime n] | |
(if (> 2 n) | |
1 | |
(* n (f-prime f-prime (dec n)))))] | |
(f f n))) | |
(fakultät 5) => 120) | |
; Kombinatorische Logik ist eine Notation, um die Verwendung von | |
; Variablen in der Mathematischen Logik zu vermeiden. (http://de.wikipedia.org/wiki/Kombinatorische_Logik) | |
(fact "#1 Ich sehe alles doppelt!" | |
(defn fakultät [n] | |
((fn [f-prime n] | |
(if (> 2 n) | |
1 | |
(* n (f-prime f-prime (dec n))))) | |
(fn [f-prime n] | |
(if (> 2 n) | |
1 | |
(* n (f-prime f-prime (dec n))))) | |
n)) | |
(fakultät 5) => 120) | |
(fact "#2 zurückbringen Rekursion!" | |
(defn machen-rekursive-funktion [f] (fn [arg] (f f arg))) | |
(defn fakultät [n] | |
((machen-rekursive-funktion | |
(fn [f-prime n] | |
(if (> 2 n) | |
1 | |
(* n (f-prime f-prime (dec n)))))) n)) | |
(fakultät 5) => 120) | |
(fact "#3 gibt es noch einige Doppelarbeit in den Rumpf der Funktion" | |
(defn machen-rekursive-funktion [f] (fn [arg] (f f arg))) | |
(defn fakultät [n] | |
((machen-rekursive-funktion | |
(fn [f-prime n] | |
(if (> 2 n) | |
1 | |
(* n ((machen-rekursive-funktion f-prime) (dec n)))))) n)) | |
(fakultät 5) => 120) | |
(fact "fakultät tabelle" | |
(fakultät 2) => 2 | |
(fakultät 3) => 6 | |
(fakultät 4) => 24 | |
(fakultät 5) => 120 | |
(fakultät 6) => 720 | |
(fakultät 7) => 5040 | |
(fakultät 8) => 40320 | |
(fakultät 9) => 362880 | |
(fakultät 10) => 3628800 | |
(fakultät 11) => 39916800 | |
(fakultät 12) => 479001600 | |
(fakultät 13) => 6227020800 | |
(fakultät 14) => 87178291200 | |
(fakultät 15) => 1307674368000 | |
(fakultät 16) => 20922789888000 | |
(fakultät 17) => 355687428096000 | |
(fakultät 18) => 6402373705728000 | |
(fakultät 19) => 121645100408832000 | |
(fakultät 20) => 2432902008176640000 | |
(fakultät 21) => 51090942171709440000 | |
(fakultät 22) => 1124000727777607680000 | |
(fakultät 23) => 25852016738884976640000 | |
(fakultät 24) => 620448401733239439360000 | |
(fakultät 25) => 15511210043330985984000000 | |
(fakultät 26) => 403291461126605635584000000 | |
(fakultät 27) => 10888869450418352160768000000 | |
(fakultät 28) => 304888344611713860501504000000 | |
(fakultät 29) => 8841761993739701954543616000000 | |
(fakultät 30) => 265252859812191058636308480000000) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment