我正在尝试在 clojure 中实现冒泡排序功能,
下面的 b_sort 函数给出错误,
但是如果我在 b_sort 函数中执行语句,它就会起作用,
(def r_list (take 10 (repeatedly #(rand-int 100))))
(def r_vec (vec r_list))
(def cnt (count r_vec))
(defn b_sort
(loop [i 0]
(if (< i cnt)
(loop [j (+ i 1)]
(if (< j cnt)
(do
(def a (r_vec i))
(def b (r_vec j))
(if (> a b)
(do
(def r_vec (assoc r_vec i b j a))
(println r_vec)
)
)
(if (< j cnt)
(recur (inc j)
)))
)
)
)
(if (< i cnt)
(recur (inc i)
)
)
)
)
以下是 b_sort 函数中的错误,
(如果(< i cnt) (recur (inc i))))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
应该满足
矢量?
或值
(...(循环......)) ^^^^
应该满足
矢量?
其实
defn
声明中没有任何争论,
当我将语句更改为
(defn b_sort []
时,它起作用了。