我对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)
发布于 2021-02-17 20:42:40
你已经很接近了。您需要在每次递归调用时切换列表输入的顺序,以便可以交替使用哪个元素作为结果列表。您还应该从
其他的东西,因为你并不是真的在做一个追加过程,而且这个名字有点误导:
(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)
https://stackoverflow.com/questions/66241888
复制相似问题