SICP問題1.9

(+ a b)

を1足す(inc a)と1引く(dec b)を用いて実装する二つの定義

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

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

再帰的(recursive)であるか、反復的(iterative)であるかっていう問題。

で、1つ目はrecursiveで2つ目はiterative(あえてここを英語にするのは覚えるため)
以下解答プロセス

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

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