如何在 LISP 中追加两个列表的第一个元素
How to append first element of two lists in LISP
我对 LISP 非常陌生,我正在尝试获取 2 个列表并将它们合并。
(define (append lst1 lst2)
(if (null? lst1) lst2
(cons (car lst1) (append (cdr lst2) lst2))))
(append '(1 2 3) '(4 5 6 7 8))
这导致
(1 2 3 4 5 6 7 8)
我想要两个列表的第一个元素,如果为空,它将填充另一个列表的其余部分。
(1 4 2 5 3 6 7 8)
你很接近。您需要在每次递归调用时切换列表输入的顺序,以便您可以交替将哪个元素用于结果列表。您还应该将 append
重命名为其他名称,因为您实际上并没有在执行追加过程,而且该名称有点误导:
(define (merge lst1 lst2)
(if (null? lst1)
lst2
(cons (car lst1) (merge lst2 (cdr lst1)))))
> (merge '(1 2 3) '(4 5 6 7 8))
(1 4 2 5 3 6 7 8)
我对 LISP 非常陌生,我正在尝试获取 2 个列表并将它们合并。
(define (append lst1 lst2)
(if (null? lst1) lst2
(cons (car lst1) (append (cdr lst2) lst2))))
(append '(1 2 3) '(4 5 6 7 8))
这导致
(1 2 3 4 5 6 7 8)
我想要两个列表的第一个元素,如果为空,它将填充另一个列表的其余部分。
(1 4 2 5 3 6 7 8)
你很接近。您需要在每次递归调用时切换列表输入的顺序,以便您可以交替将哪个元素用于结果列表。您还应该将 append
重命名为其他名称,因为您实际上并没有在执行追加过程,而且该名称有点误导:
(define (merge lst1 lst2)
(if (null? lst1)
lst2
(cons (car lst1) (merge lst2 (cdr lst1)))))
> (merge '(1 2 3) '(4 5 6 7 8))
(1 4 2 5 3 6 7 8)