📅  最后修改于: 2023-12-03 15:09:15.516000             🧑  作者: Mango
阶乘是一个经典的数学问题,通常表示为 n!
,其中 n
是一个正整数。阶乘可以用递归或循环方式计算。
在 Clojure 中,计算阶乘可以使用 recur
语句进行尾递归。
以下是计算阶乘的 Clojure 函数。
(defn factorial [n]
(loop [i n
result 1]
(if (zero? i)
result
(recur (dec i) (* result i)))))
在这个函数中,n
是我们要计算阶乘的数字。我们使用 loop
和 recur
语句来进行尾递归。当 i
为 0 时,函数返回 result
。否则,我们递归调用函数并更新 result
和 i
的值。
让我们来测试一下这个函数。
(factorial 5)
输出结果应该为 120
。
现在,我们已经成功地计算出了一个数字的阶乘。但如果我们要计算多个数字的阶乘呢?我们可以使用 map
函数来对一个序列中的每个元素进行计算。
(map factorial [5 6 7 8])
这会得到一个包含 [120 720 5040 40320]
的序列。
在 Clojure 中,通过递归和尾递归可以解决许多数学问题。我希望这个简单的示例能够帮助您开始用 Clojure 编写计算机程序。