Bry*_*lie 5 lisp recursion split list common-lisp
split-list 函数接受一个列表并返回由输入的交替元素组成的两个列表的列表。我写了以下内容:
(defun split-list (L)
(cond
((endp L) (list NIL NIL))
(t (let ((X (split-list (cdr L))))
(cond
((oddp (length L))
(list (cons (first L) (first X)) (cadr X)))
(t (list (first X) (cons (first L) (cadr X)))))))))
Run Code Online (Sandbox Code Playgroud)
输出与奇数列表一样,第一个列表由第 1、第 3、第 5 等元素组成,第二部分由第 2、第 4、第 6 等元素组成。然而,对于偶数列表,第 1、第 2、第 3 个。 . 位于返回列表的右侧,其余位于左侧。
例如:
(SPLIT-LIST '(a b c 1 2 3))
(SPLIT-LIST RETURNED ((b 1 3) (a c 2))
Run Code Online (Sandbox Code Playgroud)
应该交换顺序。我的逻辑是否存在重大缺陷,我遗漏了?我可以在不进行重大更改的情况下纠正这种情况吗?
是的,您无需进行重大修改即可纠正问题。
(endp (cdr L))cddr Llength电话