使用clojure的插入排序
我在尝试计算下面最后一行时遇到了这个错误:“无消息。[抛出类java.lang.NullPointerException]”使用clojure的插入排序,clojure,Clojure,我在尝试计算下面最后一行时遇到了这个错误:“无消息。[抛出类java.lang.NullPointerException]” “我的插入排序”功能哪里出了问题?好的,这是可行的。那么,为什么将(nil?uuu)和(not(seq?uuu))更改为(empty?)会产生这种差异呢?我将其总结为另一个问题:您可以尝试(nil?())和(empty?())。您使用了(restlst),并且(rest())是(),而不是nil。 (defn my-insertion-sort [lst] (loop
“我的插入排序”功能哪里出了问题?好的,这是可行的。那么,为什么将(nil?uuu)和(not(seq?uuu))更改为(empty?)会产生这种差异呢?我将其总结为另一个问题:您可以尝试(nil?())和(empty?())。您使用了(restlst),并且(rest())是(),而不是nil。
(defn my-insertion-sort [lst]
(loop [list lst result '()]
(if-not (seq? list) result
(recur (rest list) (my-insert (first list) result)))))
(defn my-insert [n lst]
(cond (nil? lst) (list n)
(> (first lst) n) (conj lst n)
:else
(conj (my-insert n (rest lst)) (first lst))))
(my-insertion-sort '(2 1 3))
(defn my-insertion-sort [lst]
(loop [list lst result '()]
(if (empty? list) result
(recur (rest list) (my-insert (first list) result)))))
(defn my-insert [n lst]
(cond
(empty? lst) (list n)
(> (first lst) n) (conj lst n)
:else (conj (my-insert n (rest lst)) (first lst))))