問題1.14、問題1.15 – SICP(計算機プログラムの構造と解釈)その7

問題1.14

(define (count-change amount)
  (cc amount 5))

(define (cc amount kinds-of-coins)
  (cond ((= amount 0) 1)
        ((or (< amount 0) (= kinds-of-coins 0)) 0)
        (else (+ (cc amount
                     (- kinds-of-coins 1))
                 (cc (- amount
                        (first-denomination kinds-of-coins))
                     kinds-of-coins)))))

(define (first-denomination kinds-of-coins)
  (cond ((= kinds-of-coins 1) 1)
        ((= kinds-of-coins 2) 5)
        ((= kinds-of-coins 3) 10)
        ((= kinds-of-coins 4) 25)
        ((= kinds-of-coins 5) 50)))
(count-change 11)
                                                                              (cc 11 5)----------------
                                                                              /                        \
                                                        --------------(cc 11 4)--------------         (cc -39 5)
                                                       /                                     \             |
                             ---------------------(cc 11 3)-----------------------        (cc -14 4)       0
                            /                                                     \            |
               -------(cc 11 2)--------                                          (cc 1 3)      0
              /                        \                                         /      \
      (cc 11 1)                        (cc 6 2)                           (cc 1 2)       (cc -9 3)
       /     \                         /       \                          /     \            |
(cc 11 0)   (cc 10 1)         (cc 6 1)          (cc 1 2)           (cc 1 1)     (cc -4 2)    0
    |        /     \           /    \               |   \              |    \        |
    0  (cc 10 0) (cc 9 1) (cc 6 0) (cc 5 1)     (cc 1 1) (cc -4 2) (cc 1 0) (cc 0 1) 0
      /         /   |      /       /   \          |    \        \      |        |
     0  (cc 9 0) (cc 8 1) 0 (cc 5 0) (cc 4 1) (cc 1 0) (cc 0 1)  0     0        1
           |        /   \       |      /    \       \      |
           0  (cc 8 0) (cc 7 1) 0 (cc 4 0) (cc 3 1)  0     1
                 |       /    \       |      /    \
                 0  (cc 7 0) (cc 6 1) 0 (cc 3 0) (cc 2 1)
                        |       /   \       |      /    \
                        0 (cc 6 0) (cc 5 1) 0 (cc 2 0) (cc 1 1)
                              |      /    \       |      /    \
                              0 (cc 5 0) (cc 4 1) 0 (cc 1 0) (cc 0 1)
                                    |      /    \       |        |
                                    0 (cc 4 0) (cc 3 1) 0        1
                                          |       /   \
                                          0 (cc 3 0) (cc 2 1)
                                                |      /    \
                                                0 (cc 2 0) (cc 1 1)
                                                      |      /    \
                                                      0 (cc 1 0) (cc 0 1)
                                                            |        |
                                                            0        1

4

スペースとステップ数の増加の程度は、ということだが、よくわらない。
答えを見てもピンとこない…(-_-;)

問題1.15

(define (cube x) (* x x x))

(define (p x) (- (* 3 x) (* 4 (cube x))))

(define (sine angle)
  (if (not (> (abs angle) 0.1))
      angle
      (p (sine (/ angle 3.0)))))

(sine 12.15)
(p (sine 4.05))
(p (p (sine 1.35)))
(p (p (p (sine 0.45))))
(p (p (p (p (sine 0.15)))))
(p (p (p (p (p (sine 0.05))))))
(p (p (p (p (p 0.05)))))
(p (p (p (p 0.1495))))
(p (p (p 0.4351348)))
(p (p 0.9758468))
(p -0.7895653)
-0.3997937

a. p が作用させられた回数は 5回

b. 手続き sine の生成するプロセスが使うスペースとステップ数の増加の程度は、ということだが、こちらもよくわからない…

計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»