我试图反转一个列表,我不能使用“nreverse”函数
我试试:
(defun dolist-reverse (l)
(let ((new-list (make-list (length l))))
(dolist (x l new-list)
(setf new-list (cons x new-list)))))
但结果是:
CL-使用者> (dolist-reverse'(1 2 3))
(3 2 1 NIL NIL NIL)
我该怎么办? (我需要使用dolist)
编辑:
最后解决我的问题:
(defun dolist-reverse (l)
(let ((new-list))
(dolist (x l new-list)
(setf new-list (cons x new-list)))))
答案 0 :(得分:3)
CL-USER 11 > (defun dolist-reverse (list &aux (reverse-list nil))
(dolist (element list reverse-list)
(push element reverse-list)))
DOLIST-REVERSE
CL-USER 12 > (dolist-reverse '(1 2 3))
(3 2 1)
答案 1 :(得分:-1)
这个做同样的事情,而不改变程序的参数;
(defun my-reverse (l)
(if (null l) nil
(append
(my-reverse (cdr l))
(list (car l)))))