SICP 習題 2.10 要求我們處理區間除法運算中除於零的問題。
題中講到一個專業程序員Ben Bitdiddle看了Alyssa的工作後提出了除於零的問題,大家留意一下這個叫Ben的人,後面會不斷出現這個人,只要是這個人提到的事情一般是對的,他的角色定位是個計算機牛人,不過是辦公室經常能看到的那種牛人,後面還有更牛的。
對於區間運算的除於零的問題,處理起來也比較簡單,只需要判斷除數是不是爲零,除數爲零就報錯。對於一個區間來講,所謂爲零就是這個區間橫跨0,再直接一點講就是起點是負數,終點是正數。
理解了以後寫代碼就很簡單了:
(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)))))
好,解題結束。