問題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 (- 5 1))
   (cc (- 11 (first-denominations 5))
       5))

(+ (cc 11 (- 5 1))
   (cc (- 11 50) 5))

(+ (cc 11 4)
   (cc -39 5))

(+ (+ (cc 11 (- 4 1))
      (cc (- 11 (first-denomination 4)) 4)) 0)

(+ (+ (cc 11 (- 4 1))
      (cc (- 11 25) 4)) 0)

(+ (+ (cc 11 3)
      (cc -14 4)) 0)

(+ (+ (+ (cc 11 (- 3 1))
         (cc (- 11 (first-denominations 3))
         3)) 0) 0)

(+ (+ (+ (cc 11 (- 3 1))
          (cc (- 11 10) 3)) 0) 0)

(+ (+ (+ (cc 11 2)
          (cc 1 3)) 0) 0)

(+ (+ (+ (+ (cc 11 (- 2 1))
              (cc (- 11 (first-denominations 2))
                  2))
          ((+ (cc 1 (- 3 1))
              (cc (- 1 (first-denominations 3))
                  3)))) 0) 0)

(+ (+ (+ (+ (cc 11 (- 2 1))
              (cc (- 11 5)
                  2))
          ((+ (cc 1 (- 3 1))
              (cc (- 1 10)
                  3)))) 0) 0)

(+ (+ (+ (+ (cc 11 1)
              (cc 6 2))
          (+ (cc 1 2)
              (cc -9 3))) 0) 0)

(+ (+ (+ (+ (+ (cc 11 (- 1 1))
               (cc (- 11 (first-denominations 1))
                   1))
              (+ (cc 6 (- 2 1))
                 (cc (- 6 (first-denominations 2))
                     2)))
          (+ (+ (cc 1 (- 2 1))
                (cc (- 1 (first-denominations 2))
                    2)) 0)) 0) 0)

(+ (+ (+ (+ (+ (cc 11 (- 1 1))
               (cc (- 11 1)
                   1))
              (+ (cc 6 (- 2 1))
                 (cc (- 6 5)
                     2)))
          (+ (+ (cc 1 (- 2 1))
                (cc (- 1 5)
                    2)) 0)) 0) 0)

(+ (+ (+ (+ (+ (cc 11 0)
               (cc 10 1))
              (+ (cc 6 1)
                 (cc 1 2)))
          (+ (+ (cc 1 1)
                (cc -4 2)) 0)) 0) 0)

(+ (+ (+ (+ (+ (cc 11 0)
               (cc 10 1))
              (+ (cc 6 1)
                 (cc 1 2)))
          (+ (+ (cc 1 1)
                0) 0)) 0) 0)

(+ (+ (+ (+ (+ 0
               (+
                (cc 10 (- 1 1))
                (cc (- 10 (first-denomination 4)) 1))
              (+ (+ (cc 6 (- 1 1))
                    (cc (- 6 (first-denomination 1)) 1))
                 (+ (cc 1 (- 2 1))
                    (cc (- 1 (first-denomination 2)) 2))
          (+ (+ (+ (cc 1 (- 1 1))
                   (cc (- 1 (first-denomination 1) 1)))
                0) 0)) 0) 0))))


(+ (+ (+ (+ (+ 0
               (+
                (cc 10 0)
                (cc (- 10 25) 1))
              (+ (+ (cc 6 (- 1 1))
                    (cc (- 6 1) 1))
                 (+ (cc 1 (- 2 1))
                    (cc (- 1 5) 2))
          (+ (+ (+ (cc 1 (- 1 1))
                   (cc (- 1 1) 1)))
                0) 0)) 0) 0)))

(+ (+ (+ (+ (+ 0
               (+ 0
                (cc -15 1))
              (+ (+ (cc 6 0)
                    (cc 5 1))
                 (+ (cc 1 1)
                    (cc -4 2))
          (+ (+ (+ (cc 1 0)
                   (cc 0 1)))
                0) 0)) 0) 0)))

(+ (+ (+ (+ (+ (+ (+ 0
                    (cc 5 1))
                 (+ (cc 1 1)
                    0)
          (+ (+ (+ 0
                  0) 0) 0) 0) 0)))))


(+ (+ (+ (+ (+ (+ (+ 0
                    (cc 5 1))
                 (+ (cc 1 1)
                    0)
          (+ (+ (+ 0
                  0) 0) 0) 0) 0)))))

:
:

よくわからなくなってしまった。。。orz
そもそも問題はなんだっけ?

「プロセスを表す木構造をかけ」だったな。
ちょっと木構造を書いてみよう

(11 5)
(11 4) (-39 5)
(???)

こ、これは、、、最初の置き換え自体ミスってる。涙
心が折れそうなので、とりあえずこのあたりにして
もう少し先に進んでみよう。

    • -

あとで戻ってきたとき用の資料


解答例を探してみる。わかりやすい。
http://d.hatena.ne.jp/tmurata/20090402/1238629863


こんなのも見つけた
http://www.billthelizard.com/2009/12/sicp-exercise-114-counting-change.html