問題3.38 – SICP(計算機プログラムの構造と解釈)その136
2009年03月25日
問題3.38
問題a.
6通りある。
Peter -> Paul -> Mary => 110 -> 90 -> 45 Peter -> Mary -> Paul => 110 -> 55 -> 35 Paul -> Peter -> Mary => 80 -> 90 -> 45 Paul -> Mary -> Peter => 80 -> 40 -> 50 Mary -> Peter -> Paul => 50 -> 60 -> 40 Mary -> Paul -> Peter => 50 -> 30 -> 40
問題b.
実行時の各ステップを手続きにして、いろいろな順で実行してみる。
(define peter-balance '()) (define paul-balance '()) (define mary-balance1 '()) (define mary-balance2 '()) (define (peter-access) (set! peter-balance balance)) (define (peter-set-balance!) (set! balance (+ peter-balance 10))) (define (paul-access) (set! paul-balance balance)) (define (paul-set-balance!) (set! balance (- paul-balance 20))) (define (mary-access1) (set! mary-balance1 balance)) (define (mary-access2) (set! mary-balance2 balance)) (define (mary-set-balance!) (set! balance (- mary-balance2 (/ mary-balance1 2))))
実行例1
(define balance 100) (peter-access) gosh> 100 (paul-access) gosh> 100 (peter-set-balance!) gosh> 110 (mary-access1) gosh> 110 (paul-set-balance!) gosh> 80 (mary-access2) gosh> 80 (mary-set-balance!) gosh> 25
実行例2
(define balance 100) (peter-access) gosh> 100 (paul-access) gosh> 100 (mary-access1) gosh> 100 (mary-access2) gosh> 100 (paul-set-balance!) gosh> 80 (mary-set-balance!) gosh> 50 (peter-set-balance!) gosh> 110
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542