SICP 문제 1.9

SICP 2024. 5. 25. 23:56
function plus(a, b) {
	return a == 0 ? b : inc(plus(dec(a), b))
}
function plus(a, b) {
	return a == 0 ? b : plus(dec(a), inc(b));
}

1 증가하는 함수 inc와 1 감소하는 함수 dec를 사용하여 plus(4, 5)를 전개한 과정의 차이는?

함수 1.

plus(4, 5)
= inc(plus(3, 5))
= inc(inc(plus(2, 5)))
= inc(inc(inc(plus(1, 5))))
= inc(inc(inc(inc(plus(0, 5)))))
= inc(inc(inc(inc(5))))
= inc(inc(inc(6)))
= inc(inc(7))
= inc(8)
= 9

함수 2.

plus(4, 5)
= plus(3, 6)
= plus(2, 7)
= plus(1, 8)
= plus(0, 9)
= 9

각 함수의 전개 과정을 보면 함수 1은 재귀적 과정이고 함수2 는 반복적 과정임을 알 수 있다.

'SICP' 카테고리의 다른 글

SICP 거듭제곱  (0) 2024.05.27
SICP 트리 재귀  (0) 2024.05.26
SICP: 반복과 재귀  (0) 2024.05.22
SICP: 1장 2 함수와 과정  (0) 2024.05.22
SICP: 뉴턴 방법으로 제곱근구하기  (0) 2024.05.20