Clojure 冒泡排序函数问题

问题描述 投票:0回答:1

我正在尝试在 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))))) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

应该满足

矢量?

或值

(...(循环......)) ^^^^

应该满足

矢量?

clojure bubble-sort
1个回答
0
投票

其实

defn
声明中没有任何争论,

当我将语句更改为

(defn b_sort []
时,它起作用了。

© www.soinside.com 2019 - 2024. All rights reserved.