2008. 3. 18.

연습문제 1.37

a.
연속 분수 cont-frac는 다음과 같이 표시할 수 있다.


(define (cont-frac n d k)
  (define (inner-cont-frac i)
    (let ((ni (n i))
          (di (d i)))
      (if (= i k)
          (/ ni di)
          (/ ni (+ di (inner-cont-frac (+ i 1)))))))
  (inner-cont-frac 1))

또한 1/pi의 값은

> (/ 2 (+ 1 (sqrt 5)))
0.6180339887498948

이다.
소수점 4자리까지 맞아 떨어지려면 최소한 0.6180이 되어야한다.


> (cont-frac (lambda (i) 1.0)
             (lambda (i) 1.0)
             11)
0.6180555555555556


k가 11이면 소수점 4자리까지 맞아떨어지는 것을 알 수 있다.

b. cont-frac을 반복형으로 만들면

(define (cont-frac-iter n d k)
  (define (iter-cont-frac i result)
    (let ((ni (n i))
          (di (d i)))
      (if (= i 0)
          result
          (iter-cont-frac (- i 1)
                          (/ ni (+ di result))))))
  (iter-cont-frac k 0))


와 같다.

댓글 없음:

댓글 쓰기