Skip to content

1.09

; Each of the following two procedures defines a 
; method for adding two positive integers in terms 
; of the procedures inc, which increments its argument 
; by 1, and dec, which decrements its argument by 1
(define (+ a b)
    (if (= a 0) b (inc (+ (dec a) b)))
)
(define (+ a b)
    (if (= a 0) b (+ (dec a) (inc b)))
)
; Using the substitution model, illustrate the process 
; generated by each procedure in evaluating (+ 4 5).
; Are these processes iterative or recursive?

; Answer
;
; (1) Definition 1
; --------------------------------------------------
; (+ 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
; This is a "recursive" procedure

; (2) Definition 2
; --------------------------------------------------
; (+ 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
; This is an "iterative" procedure