*** - SYSTEM::%EXPAND-FORM: (< J N) should be a lambda expression
这是正在发生的代码:
(defun SORTALIST (x) (setq i 0) (setq j (+ i 1))
(cond ((< i n)) (cond ((< j n))
(cond ((> (car (nth (i) (x)))(car (nth (j) (x)))))
(EXCHANGE (nth (i)(x))(nth (j)(x)))
(setq j (+ j 1)) (SORTALIST (x)))
(t (setq j (+ j 1)) (SORTALIST (x))))
(t (setq i (+ i 1)) (setq j (+ i 1)) (SORTALIST (x)))) (x))
我改变了一个小时的东西,我无法弄清楚我可以修复的地方。 我该如何解决这个问题?
答案 0 :(得分:4)
很难找到任何与您的代码没有错误的内容:
您不能使用局部变量在递归调用之间传递值。 i
和j
需要是函数参数。 (另外,setq
不是引入新局部变量的正确方法。请使用let
。)
不要将多个语句填充到一行中,并使用不同的缩进宽度来标记嵌套条件。难怪你无法用这种残酷的格式来识别问题。