SICP 习题 2.10 要求我们处理区间除法运算中除于零的问题。
题中讲到一个专业程序猿Ben Bitdiddle看了Alyssa的工作后提出了除于零的问题,大家留意一下这个叫Ben的人,后面会不断出现这个人,仅仅要是这个人提到的事情通常是对的,他的角色定位是个计算机牛人,只是是办公室常常能看到的那种牛人,后面还有更牛的。
对于区间运算的除于零的问题,处理起来也比較简单,仅仅须要推断除数是不是为零,除数为零就报错。对于一个区间来讲,所谓为零就是这个区间横跨0,再直接一点讲就是起点是负数,终点是正数。
理解了以后写代码就非常easy了:
(define (div-interval x y)
(if (< (* (upper-bound y) (lower-bound y)) 0)
(error "Div 0:" y))
(mul-interval x
(make-interval (/ 1.0 (upper-bound y))
(/ 1.0 (lower-bound y)))))
好,解题结束。