sicp习题试解 (2.12)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

; ======================================================================

;

; Structure and Interpretation of Computer Programs

; (trial answer to excercises)

;

; 计算机程序的构造和解释(习题试解)

;

; created: code17 05/30/05

; modified:

; (保持内容完整不变前提下,可以任意转载)

; ======================================================================

;; SICP No.2.12

;; 唯一的注意事项是符号,

;; 比如当c小于0时,make-center-percent定义中make-interval中两个操作数的先后

;; 以及如何保证percent函数的输出始终是正的。

(define (make-center-percent c p)

(if (or (< p 0) (> p 1))

(error "Percentage x should satisfy 0 <= x <= 1")

(let ((a (* c (+ 1.0 p)))

(b (* c (- 1.0 p))))

(make-interval (min a b) (max a b)))))

(define (center i)

(/ (+ (lower-bound i) (upper-bound i)) 2.0))

(define (percent i)

(let ((l (lower-bound i))

(u (upper-bound i)))

(/ (- u l) (abs (+ u l)))))

;; Test-it:

;; Welcome to MzScheme version 209, Copyright (c) 2004 PLT Scheme, Inc.

;; ;; .............

;;

;; > (make-center-percent -20.0 0.1)

;; (-22.0 . -18.0)

;; > (define v (make-center-percent -20.0 0.1))

;; > (center v)

;; -20.0

;; > (percent v)

;; 0.1

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航