【发布时间】:2018-11-09 18:46:18
【问题描述】:
我真的很难做到这一点。函数如下
编写一个名为 no-divisors 的函数?它需要一个输入 n。如果没有介于 2 和 √???? 之间的数字,该函数应该返回 true除n,否则为假。该函数应该同时使用您的 get-divisors 函数和您的除数?功能。 提示:您可能需要包装这些分隔线?匿名函数中的函数,以便您可以传入 n 的值。
这是我的get-divisors 函数:
(defn get-divisors [n]
(str (range 2 (inc (Math/floor (Math/sqrt n))))))
这是我的divides? 函数:
(defn divide [a b]
(zero? (mod a b)))
我试图创建一个方法来尝试完成这个任务,但是没有成功。
这是我尝试过的:
(defn no-divisors [n]
divide(n (get-divisors n)))
我收到了输出:
ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn user/x (form-init5516475059937019181.clj:16)`
我有一个想法,我想分享我如何创建这个任务,但是,因为这是我第一次使用 Clojure,我不太确定要实现这个功能,甚至是否可能。非常抱歉我的语法混合了,只是到目前为止我从未使用过 Clojure,但这是我的草稿/蓝图:
(defn no-divisors [n]
resultsArray = []
def results((get-divisors n))
for results in get-divisors
resultsArray.append(results)
for i=results[0]; i< results.count; i++
divide(n i)
)
我可能走在正确的道路上,或者可能(很可能)完全错误。我很感激并感谢我可能收到的任何/所有帮助。顺便说一句,我的get-divisors 和divides? 函数都可以完美运行。
【问题讨论】:
-
您的语法已关闭。
divide( ...)在 Clojure 中是(divide ...);命名中还有dividdevsdivides?。 -
@cfrick 啊,是的!我的错误,只是我没有使用 Clojure 语法。并对我的伪代码中的不一致表示歉意。
标签: clojure