[SICP] 연습문제 1.15 SICP스터디

(define (cube x) (* x x x))

(define (p x) (- (* 3 x) (* 4 (cube x))))

(define (sine angle)
  (if (not (> (abs angle) 0.1))
      angle
      (p (sine (/ angle 3.0)))))

a. (sine 12.15) 의 값을 구할 때 p 프로시저 호출 수
- 첫번째
(p (sine 4.05))
(p (p (sine 1.35)))
(p (p (p (sine 0.45))))
(p (p (p (p (sine 0.15)))))
(p (p (p (p (p (sine 0.05))))))

마지막 줄이 프로시저를 전부 풀어쓴 모양이 되니까 p가 5번 호출되는 것을 확인할 수 있다.
- 두번째
p의 인자값이 3.0으로 나눠지고 0.1 이하의 값이 나오면 종료 조건이므로 (12.15 / 3.0)을 하면 4.05이니까 올림해서 5번 p가 호출
(이렇게 풀어도 되는건가;;)

b. (sine a) 프로세스의 기억공간과 계산 단계의 자람 차수를 a의 함수로..
sine 프로시저는 되도는 프로세스이므로 프로세스의 기억공간과 계산 단계는 Θ(n)으로 선형적으로 자란다.
인자값이 3의 배수로 감소하므로 반대로 생각하면 3의 배수로 기억공간과 계산 단계가 1씩 늘어난다. 그러므로 n = 3^X, 로그 자람 차수로 바꾸면 Θ(log3X)



트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://grow.egloos.com/tb/4245139 [도움말]

덧글

덧글 입력 영역