如何解决如何在 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。