SICP 习题2.59 union-set操作

来源:互联网 发布:access数据库巡检 编辑:程序博客网 时间:2024/05/03 01:55

union-set操作的想法就是找出set1中set2里面没有的,set2中没有的和set2放在一起,就是union-set

第二种实现方法利用了adjoin,其实思想是一样的,

(union set1 set2) = (union (cdr set1) (adjoin (car set1) set2))
(define (element-of-set? x set)  (cond ((null? set) false)        ((equal? x (car set)) true)        (else (element-of-set? x (cdr set)))))(define (adjoin x set)  (if (element-of-set? x set)    set    (cons x set)))(define (intersection-set set1 set2)  (cond ((or (null? set1) (null? set2)) '())         ((element-of-set? (car set1) set2)          (cons (car set1)                (intersection-set (cdr set1) set2)))         (else (intersection-set (cdr set1) set2))))(define (union-set set1 set2)  (cond ((null? set1) set2)        ((not (element-of-set? (car set1) set2))         (cons (car set1)            (union-set (cdr set1) set2)))        (else (union-set (cdr set1) set2))))(define s1 '(1 2 3 4 5 6))(define s2 '(9 2 3 4 8 10))(newline)(display (intersection-set s1 s2))(newline)(display (union-set s1 s2))(define (union-set set1 set2)  (cond ((null? set1) set2)        (else           (union-set (cdr set1)                     (adjoin (car set1) set2)))))(newline)(display (union-set s1 s2))
0 0
原创粉丝点击