我写了这个方案代码来计算二次方程a x2 + b x + c = 0的一个解
(define (solve-quadratic-equation a b c) (define disc (sqrt (- (* b b) (* 4.0 a c)))) (/ (+ (- b) disc) (* 2.0 a)))
但是,有人告诉我这个程序很难理解.为什么?
这个程序的清理版本会是什么样的?请让我知道为什么新程序会更容易理解.
谢谢
嗯,一个原因是它都在一条线上.您可以使用称为漂亮打印的内容使其更具可读性,您可以将其分解为多行并使用空格:
(define (solve-quadratic-equation a b c) (define disc (sqrt (- (* b b) (* 4.0 a c)))) (/ (+ (- b) disc) (* 2.0 a)))
这样您就可以更清楚地看到表达式的结构.
这是SICP的一句话:
原则上,这种嵌套的深度和Lisp解释器可以评估的表达式的整体复杂性没有限制.我们人类会因为相对简单的表达而感到困惑,例如
(+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))口译员很容易评价为57.我们可以通过在表格中写下这样的表达来帮助自己
(+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))遵循称为漂亮打印的格式约定,其中写入每个长组合以使操作数垂直对齐.由此产生的缩进清楚地显示了表达式的结构.