如何在Lisp

时间:2016-10-02 16:54:28

标签: lisp

我正在尝试使用递归使用一个参数进行配对功能。 但我不知道如何解决这个问题。 这是我的代码:

(defun makepair (l)
  (cond ((null l) nil)
        ((and (atom (car l)) (atom (cdr l))) (list (car l) (cdr l)))
        (t (makepair (cdr l)))
  )
)

我必须'(1 d 2 c)((1 d) (1 2) (1 c) (d 2) (d c) (2 c))

2 个答案:

答案 0 :(得分:0)

试试这个:

   (defun makepair (l)
      (if (atom l) nil
        (append (loop for i in (rest l)
                   collecting (list (car l) i))
          (makepair (rest l)))))

答案 1 :(得分:0)

递归版本(根据需要)如下所示:

setInterval