SICP問題1.9

; (1)
(define (+ a b)
  (if (= a 0)
    b
    (inc (+ (dec a) b))))

これが (+ 4 5)を評価する時に生成するプロセスは以下のようになる

(+ 4 5)
(inc (+ (dec 4) 5))
(inc (+ 3 5))
(inc (inc (+ (dec 3) 5)))
(inc (inc (+ 2 5)))
(inc (inc (inc (+ (dec 2) 5))))
(inc (inc (inc (+ 1 5))))
(inc (inc (inc (inc (+ (dec 1) 5)))))
(inc (inc (inc (inc (+ 0 5)))))
(inc (inc (inc (inc 5))))
(inc (inc (inc 6)))
(inc (inc 7)))
(inc 8)
9

ということで、これは線形再帰プロセスである

; (2)
(define (+ a b)
  (if (= a 0)
    b
    (+ (dec a) (inc b))))

これが (+ 4 5)を評価する時に生成するプロセスは以下のようになる。

(+ 4 5)
(+ (dec 4) (inc 5))
(+ 3 6)
(+ (dec 3) (inc 6))
(+ 2 7)
(+ (dec 2) (inc 7))
(+ 1 8)
(+ (dec 1) (inc 8))
(+ 0 9)
9

ということで、これは反復的プロセスである。