Factorial: Difference between revisions
→{{header|Clojure}}: added trampolining solution, updated all solutions to support arbitrary precision
No edit summary |
(→{{header|Clojure}}: added trampolining solution, updated all solutions to support arbitrary precision) |
||
Line 2,968:
=== Folding ===
<syntaxhighlight lang="lisp">(defn factorial [x]
(apply *' (range 2 (inc x))))</syntaxhighlight>
=== Recursive ===
Line 2,974:
(if (< x 2)
1
(*' x (factorial (dec x)))))</syntaxhighlight>
=== Tail recursive ===
Line 2,982:
(if (< x 2)
acc
(recur (dec x) (*' acc x)))))</syntaxhighlight>
=== Trampolining ===
<syntaxhighlight lang="lisp">(defn factorial
([x] (trampoline factorial x 1))
([x acc]
(if (< x 2)
acc
#(factorial (dec x) (*' acc x)))))</syntaxhighlight>
=={{header|CLU}}==
|