第一次写博客,还有点小激动呢(>_<)…
sicp 10天前开始读,昨天刚把第一章读完,46道题也全部做完,收获颇大。
练习2.1 定义出make-rat的一个更好的版本,使之可以同时处理。有理数为正时, make-rat应该使其规范化,使它的分子分母都为正。如果为负则只让它的分子为负。
这道题总体来说比较简单,在make-rat里进行一次判断就可以了。
(define (make-rat n d)
(let ((g (gcd (abs n) (abs d))))
(if (> (* n d) 0)
(cons (abs n) (abs d))
(cons (- (/ (abs n) g)) (/ (abs d) g)))))