题目如上,依照题目意图实现函数如下
- (defn next-item [n] (if (<= n 2) 3 (+ n 2)))
-
- (defn find-divisor [n test-divisor]
- (cond (> (square test-divisor) n) n
- (divisor? test-divisor n) test-divisor
- :else (find-divisor n (next-item test-divisor))
- )
- )
之所以用了next-item 是因为next有语言提供的功能,为了区分,改成next-item。
运行结果依然如上一题,无法看出运算速度关系,但是可以肯定的是,壁纸不是2.为什么我也不知道哦。嗯 我也把系统的next贴上来吧,权当我在凑字数
- (def
- ^{:arglists '([coll])
- :tag clojure.lang.ISeq
- :doc "Returns a seq of the items after the first. Calls seq on its
- argument. If there are no more items, returns nil."
- :added "1.0"
- :static true}
- next (fn ^:static next [x] (. clojure.lang.RT (next x))))