0

谁能帮助我返回两个不同列表中的差异的代码,即 A 中的集合而不是 B 中的集合,例如 (set-difference '(1 2 4 5 6) '(4 5 6 2 8) 是 1 . 这是课堂上的实验室评估,我想知道它会完成。我知道它涉及线性时间方面,但我真的不知道如何在方案中实施。

4

1 回答 1

2

尝试这个:

(define (set-difference s1 s2)
  (cond ((null? s1)
         '())
        ((not (member (car s1) s2))
         (cons (car s1) (set-difference (cdr s1) s2)))
        (else
         (set-difference (cdr s1) s2))))
于 2012-07-23T23:08:14.860 回答