問題2.62 – SICP(計算機プログラムの構造と解釈)その74
2009年01月18日
問題2.62
set1
が空集合の場合はset2
を返す。set2
が空集合の場合はset1
を返す。set1
の最初の要素とset2
の最初の要素が等しい場合は、"set1
の最初の要素"と "set1
、set2
の残りの要素のリストの和集合から成るリスト"を返す。set1
の最初の要素がset2
の最初の要素より小さい場合は、"set1
の最初の要素"と "set1
の残りの要素のリストとset2
のリストの和集合からなるリスト"を返す。set1
の最初の要素がset2
の最初の要素より大きい場合は、"set2
の最初の要素"と "set1
のリストとset2
の残りの要素のリストの和集合からなるリスト"を返す。
(define (union-set set1 set2) (cond ((null? set1) set2) ((null? set2) set1) (else (let ((x1 (car set1)) (x2 (car set2))) (cond ((= x1 x2) (cons x1 (union-set (cdr set1) (cdr set2)))) ((< x1 x2) (cons x1 (union-set (cdr set1) set2))) ((> x1 x2) (cons x2 (union-set set1 (cdr set2))))))))) (union-set '(1 2 3 4 5) '(2 4 6)) gosh> (1 2 3 4 5 6) (union-set '(1 2) '(2 4 6)) gosh> (1 2 4 6) (union-set '(1 2) '(1 2 4 6 8 10)) gosh> (1 2 4 6 8 10)
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542