read

(+ 4 5)

첫번째 define
=>
(if (= 4 0)
    5
    (inc (+ (dec 4) 5)))
=>
(inc (+ (dec 4) 5)))

=>
(inc
(if (= (dec 4) 0)
     5
     (inc (+ (dec (dec 4) 5)))))

=>
(inc (inc (+ (dec (dec 4) 5))))

이런 식으로 계속 되어 if 문의 predicate 이 (= 0 0) 으로 evaluate 될 때까지 반복된다.

(inc (inc (inc (inc 5))))

chain of operation 이 보이므로 이것은  recursive process

두번째 define
=>
(if (= 4 0)
    5
    (+ (dec 4) (inc 5)))

=>
(+ (dec 4) (inc 5))

=>
(+ 3 6)

=>
(if (= 3 0)
    6
    (+ (dec 3) (inc 6)))

=>
(+ (dec 3) (inc 6))

이런 식으로 계속되어 첫번째 인자가 0 이 될때까지 반복된다.

(+ (dec 1) (inc 8))

=>
(+ 0 9)

=>
(if (= 0 0)
    9
    (+ (dec 0) (inc 9)))

=>
9

첫번째 인자가 inc 를 몇번이나 더 호출해야 하는 지에 대한 상태값을 나타내므로 이것은 iterative process 라 할 수 있다.

Blog Logo

Ki Sung Bae


Published

Image

Gsong's Blog

Developer + Entrepreneur = Entreveloper

Back to Overview