📜  如何计算阶乘 clojure (1)

📅  最后修改于: 2023-12-03 15:09:15.516000             🧑  作者: Mango

如何计算阶乘:Clojure 版本

阶乘是一个经典的数学问题,通常表示为 n!,其中 n 是一个正整数。阶乘可以用递归或循环方式计算。

在 Clojure 中,计算阶乘可以使用 recur 语句进行尾递归。

以下是计算阶乘的 Clojure 函数。

(defn factorial [n]
  (loop [i n
         result 1]
    (if (zero? i)
      result
      (recur (dec i) (* result i)))))

在这个函数中,n 是我们要计算阶乘的数字。我们使用 looprecur 语句来进行尾递归。当 i 为 0 时,函数返回 result。否则,我们递归调用函数并更新 resulti 的值。

让我们来测试一下这个函数。

(factorial 5)

输出结果应该为 120

现在,我们已经成功地计算出了一个数字的阶乘。但如果我们要计算多个数字的阶乘呢?我们可以使用 map 函数来对一个序列中的每个元素进行计算。

(map factorial [5 6 7 8])

这会得到一个包含 [120 720 5040 40320] 的序列。

在 Clojure 中,通过递归和尾递归可以解决许多数学问题。我希望这个简单的示例能够帮助您开始用 Clojure 编写计算机程序。