問題3.17 – SICP(計算機プログラムの構造と解釈)その117
2009年03月03日
問題3.17
一度数えた対を記録して保持し、カウント直前にチェックを行う。
(define (make-count-pairs walks) (define (count-pairs x) (cond ((not (pair? x)) 0) ((memq x walks) 0) (else (set! walks (cons x walks)) (+ (count-pairs (car x)) (count-pairs (cdr x)) 1)))) count-pairs) (define CP (make-count-pairs '())) (define x (cons 'a (cons 'b (cons 'c '())))) (CP x) gosh> 3 (display x) gosh> (a b c)#<undef> (define x (cons 'd (cons 'a '()))) (set-car! x (cons 'b (cdr x))) (CP x) gosh> 3 (display x) gosh> ((b a) a)#<undef> (define x (cons 'a (cons 'b (cons 'c '())))) (set-car! (cdr x) (cdr (cdr x))) (set-car! x (cdr x)) (CP x) gosh> 3 (display x) gosh> (((c) c) (c) c)#<undef>
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542