2008. 4. 3.

연습문제 2.1

먼저 부호를 가져오는 방법은 절대값을 구한 후 해당 값을 나누어서 얻도록 했다.

해당 부호값은 다음과 같이 얻을 수 있다.
(* (/ (abs n) n)
  (/ (abs d) d))

따라서 준 식은 다음과 같이 표현할 수 있다.

(define (make-rat n d)
  (let ((abs-n (abs n))
        (abs-d (abs d)))
    (let ((g (gcd abs-n abs-d))
          (sign (* (/ abs-n n) (/ abs-d d))))
      (cons (* (/ abs-n g) sign)
            (/ abs-d g)))))
let이 좀 많이 들어갔는데.. 일단 답이 나오는데 만족함..

댓글 없음:

댓글 쓰기