さかもとのブログ

つらつらと

SICP演習問題1.37

;;再帰的プロセス                                                                                                                               
(define (cont-frac n d k)
  (if (= k 0)
      1
      (/ (n k) (+ (d k) (cont-frac n d (- k 1))))))
(trace cont-frac)
(cont-frac (lambda (i) 1.0)
           (lambda (i) 1.0)
           10)

;;反復的プロセス                                                                                                                               
(define (cont-frac n d k)
  (let loop ((result (/ (n k) (d k)))
             (i (- k 1)))
    (if (= i 0)
        result
        (loop (/ (n i) (+ (d i) result))
              (- i 1)))))
(cont-frac (lambda (i) 1.0)
           (lambda (i) 1.0)
           100)