【发布时间】:2016-10-24 23:44:06
【问题描述】:
尝试定义一个factors 函数,该函数将使用循环/递归返回一个数字的所有因子的向量。
;; `prime?` borrowed from https://swizec.com/blog/comparing-clojure-and-node-js-for-speed/swizec/1593
(defn prime? [n]
(if (even? n) false
(let [root (num (int (Math/sqrt n)))]
(loop [i 3] (if (> i root) true
(if (zero? (mod n i)) false
(recur (+ i 2))))))))
(defn factors [x] (
(loop [n x i 2 acc []]
(if (prime? n) (conj acc n)
(if (zero? (mod n i)) (recur (/ n i) 2 (conj acc i))
(recur n (inc i) acc))))))
但我一直遇到以下错误:
ArityException Wrong number of args (0) passed to: PersistentVector clojure.lang.AFn.throwArity
我必须在这里遗漏一些明显的东西。任何建议都非常感谢!
【问题讨论】:
标签: clojure