Common lisp 在LISP中递归比较两个列表

Common lisp 在LISP中递归比较两个列表,common-lisp,Common Lisp,我目前正在尝试创建一个函数,它比较两个按优势排序的列表的内容,并创建一个也按优势排序的列表 例如(4 6 8 9 10)(1 2 5 7 9)将变成(1 2 4 5 6 7 9 10) 当我们使用递归时,我希望这必须递归地完成。我对LISP的了解有限,我正在努力解决这个问题。任何帮助都将不胜感激 这称为合并 您可以通过始终查看每个列表的第一个元素并选择较低的元素来构建一个新列表。这称为合并 您可以通过始终查看每个列表的第一个元素并选择较低的元素来构建一个新列表。您不需要自己实现这一点。Commo

我目前正在尝试创建一个函数,它比较两个按优势排序的列表的内容,并创建一个也按优势排序的列表

例如(4 6 8 9 10)(1 2 5 7 9)将变成(1 2 4 5 6 7 9 10)

当我们使用递归时,我希望这必须递归地完成。我对LISP的了解有限,我正在努力解决这个问题。任何帮助都将不胜感激

这称为合并

您可以通过始终查看每个列表的第一个元素并选择较低的元素来构建一个新列表。

这称为合并


您可以通过始终查看每个列表的第一个元素并选择较低的元素来构建一个新列表。

您不需要自己实现这一点。Common Lisp具有以下功能:


CL-USER>(合并'list'(4 6 8 9 10)'(1 2 5 7 9)您无需自行实现此功能。Common Lisp具有以下功能:


CL-USER>(合并'list'(4 6 8 9 10)'(1 2 5 7 9)如果您想递归地执行此操作,那么您可以

(defun merge1 (ls1 ls2)
  (cond ((null ls1) ls2)
        ((null ls2) ls1)
        ((< (car ls1) (car ls2))
         (cons (car ls1)
               (merge1 (cdr ls1) ls2)))
        (t (cons (car ls2)
                 (merge1 ls1 (cdr ls2))))))
(defun merge1(ls1 ls2)
(条件((空ls1)ls2)
((空ls2)ls1)
(<(ls1车)(ls2车))
(cons(车辆ls1)
(合并1(cdr ls1)ls2)))
(t)(cons(车辆ls2)
(合并1 ls1(cdr ls2(()())))

如果希望递归执行,则可以

(defun merge1 (ls1 ls2)
  (cond ((null ls1) ls2)
        ((null ls2) ls1)
        ((< (car ls1) (car ls2))
         (cons (car ls1)
               (merge1 (cdr ls1) ls2)))
        (t (cons (car ls2)
                 (merge1 ls1 (cdr ls2))))))
(defun merge1(ls1 ls2)
(条件((空ls1)ls2)
((空ls2)ls1)
(<(ls1车)(ls2车))
(cons(车辆ls1)
(合并1(cdr ls1)ls2)))
(t)(cons(车辆ls2)
(合并1 ls1(cdr ls2(()())))

到目前为止,您尝试了什么?尝试找出基本情况-对于哪些输入是不重要的输出(提示:输出可能只是其中一个输入)。处理完基本情况后,在进行递归调用之前,请考虑要执行的工作。您的问题缺少有关要实现的算法以及迄今为止尝试过的内容的信息。您所描述的内容独立于Lisp,可以用多种编程语言编写。目前,我正在尝试创建第三种列表,第一个和第二个列表相互附加。然后对其执行插入排序。但我很难创建列表本身。到目前为止,您尝试过的内容可能重复?请尝试找出基本情况-对于哪些输入,输出不重要(提示:输出可能只是其中一个输入)。处理完基本情况后,在进行递归调用之前,请考虑要执行的工作。您的问题缺少有关要实现的算法以及迄今为止尝试过的内容的信息。您所描述的内容独立于Lisp,可以用多种编程语言编写。目前,我正在尝试创建第三种第一个和第二个列表相互附加。然后对其执行插入排序。但我很难创建列表本身。的可能重复项