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

n < 3  이면 f(n) = n
n >= 3 이면 f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3)

되도는 프로세스(recursive process)
(define (f-rec n)
  (cond ((< n 3) n)
        ((>= n 3)
         (+ (f-rec (- n 1))
            (* 2 (f-rec (- n 2)))
            (* 3 (f-rec (- n 3)))))))

반복 프로세스
(define (f-iter a b c count)
  (if (= count 0)
      c
      (f-iter (+ a (* 2 b) (* 3 c)) a b (- count 1))))

(f-iter 2 1 0 n)

되도는 프로세스는 쉽게 풀었는데 반복 프로세스에서 좀 많이 고민했다. 책 본문에 피보나치 수열을 반복 프로세스로 만든 코드를 보고 비슷하게 대입하고 f-rec와 f-iter에 n값을 똑같이 주고 몇 번 테스트해봤는데 결과가 비슷하다.

a <- a + 2b + 3c
b <- a
c <- b

규칙을 저렇게 만들었는데, a를 왜 저렇게 만들었는지 나도 모르겠다;;; 공책에 풀어쓰면서 찍었던건데 어쩌다가 딱 맞아 떨어졌는지.. a의 규칙을 왜 저렇게 만들었는지 이해를 해야할 텐데 주관식 문제에서도 찍기 실력이 나오면 곤란하다.

트랙백

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

핑백

덧글

덧글 입력 영역