연습문제 1.37 SICP Chapter 1

(define (cont-frac n d k)
  (define (cont-rep i)
    (if (= i k) 0
        (/ (n i) (+ (d i) (cont-rep (+ i 1))))))
  (cont-rep 1))

(define (cont-frac2 n d k)
  (define (cont-iter answer i)
    (if (= i 1) answer
        (cont-iter (/ (n i) (+ (d i) answer)) (- i 1))))
  (cont-iter (/ (n k) (d k)) (- k 1)))

===========================================================
========================OUTPUT===========================
===========================================================

Welcome to DrScheme, version 372 [3m].
Language: Lazy Scheme.
> (/ 1 (cont-frac (lambda (i) 1.0)
              (lambda (i) 1.0)
              13))
1.6180555555555558
> (/ 1 (cont-frac2 (lambda (i) 1.0)
              (lambda (i) 1.0)
              13))
1.6180555555555558

===========================================================
 사실 문제를 읽어도 감이 안잡히는 문제였다. 그래서 한동안 손에서 놓았었다.. 결국 Gsong's Blog 에서 다른이의 풀이를 보고서야 문제를 이해했다. 다시 보니 막막함마저 들지만 다시 굳었던 머리가 녹을 것이라 예상하면서 계속 진행해보기로 한다.

풀이는 오히려 간단한 느낌이다. 본문에 나왔던 fixed-point와는 오히려 상관없게 느껴질 정도다. 그래서 문제의 의도를 파악하지 못하고 자꾸만 멀리로 갔던 듯 하다.

다시 머리에 기름칠 한다는 생각으로 꼼꼼히 다시 읽어봄이다.

트랙백

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

덧글

댓글 입력 영역