CS 33

연습문제 1.10

주어진 함수를 정의하면 A(x, y) = { 0 만일 y가 0이면 2 * y 만일 x가 0이면 2 만일 y가 1이면 A(x - 1, A(x, y -1))); 그밖의 경우 } 따라서 A(1,10)는 A(1, 10) A(0, A(1, 9)) 2 * A(1, 9) 2 * A(0, A(1,8)) ..... 2^10 A(2,4)는 A(2, 4) A(1, A(2,3)) A(1, A(1, A(2, 2)))) A(1, A(1, A(1, A(2, 1))))) A(1, A(1, A(1, 2)))) A(1, A(1, A(0, A(1, 1)))) A(1, A(1, A(0, 2)))) A(1, A(1, 4))) A(2, 4) -> A(1, A(1, 4)) -> A(1, 16) 2^16 A(3,3)는 A(3, 3) A(2, A(..

CS/SICP in JS 2023.02.10

연습문제 1.7

큰 값을 집어넣거나 아주 작은 값을 넣으면 부동소수점 문제로 인해 올바른 결과를 출력하지 못한다. 아주 큰 수의 경우, improve가 계속해서 같은 답을 생성하게 되어, good-enough?를 탈출할 수 없는 무한 루프에 빠지게 된다. 작은 숫자의 경우, good-enough에서 정의한 정밀도로 오차를 계산하는 게 의미가 없음을 직관적으로 알 수 있다. 문제에서 주어진대로 good-enough를 어림잡은 값을 헌값에 견주어 고쳐나가는 방식으로 수정하면, 큰 수와 작은 수에서도 문제없이 작동하게 된다.

CS/SICP 2022.05.03
728x90