交差に関する以前の投稿 (スキームで 2 つのリストからペアの交差を取得する方法は? ) の続きとして、同じ行に沿ってユニオンの小さなコードを書きました。出力は (union '((1 2)(2 1)) '((1 3)(3 4))) -- '((1 5)(2 1)(3 4)) のようになります。しかし、私のプログラムの出力は、まさに私が望むものではありません。私の再帰または条件には、何らかのガイダンスが必要だと思います。助けてください。ありがとう。
(define union
(lambda (set1 set2)
(let ((newlist '()))
(cond ((null? set1) set2)
((null? set2) set1)
((eq? (caar set1) (caar set2))
(append newlist (cons (caar set1) (+ (cadr (car set1))(cadr (car set2))))))
(else
(if (> (caar set1) (caar set2))(append newlist (car set1)) (union (cdr set1) set2))
(union set1 (cdr set2)))))))