我正在使用 R5RS Scheme,我只想实现一个返回两个给定列表的交集的函数,但我不能这样做,因为我无法将元素添加到列表中。这是我的代码。我该如何解决?我真的是 Scheme 的初学者 - 这是我使用 Scheme 的第一部作品。
提前致谢..
(define list3 '())
(define (E7 list1 list2)
(cond
((null? list1)
list3)
((member (car list1) list2) (append list3 (list (car list1))))
)
(cond
((null? list1)
list3)
((not(null? list1)) (E7 (cdr list1) list2)
)
)
)
(E7 '(4 5) '(3 4))
最佳答案
这是一个递归版本,它执行交集而不是并集。
(define (intersect list1 list2)
(cond ((null? list1) list1)
((member (car list1) list2) (cons (car list1) (intersect (cdr list1) list2)))
(t (intersect (cdr list1) list2))))
关于list - 向 Scheme 中的列表添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2541872/