使用Scheme代码求解二次方程?

时间:2008-10-30 05:24:30

标签: coding-style scheme

2 个答案:

答案 0 :(得分:7)

嗯,原因之一是它全部都在一条线上。您可以使用名为漂亮打印的内容使其更具可读性,您可以将其分解为多行并使用空格:

(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))
     

遵循称为漂亮打印的格式约定,其中写入每个长组合,以便操作数垂直对齐。由此产生的缩进清楚地显示了表达式的结构。

答案 1 :(得分:1)

是不是计划开发语言来解决问题?我承认我不知道多少计划,但我会添加一些缩进并添加一个正方形definelike。

 (define (solve-quadratic-equation a b c)
     (define square (x) (* x x) 
     (define disc (sqrt (- (square b) (* 4.0 a c)))) 
                        (/ (+ (- b) disc) (* 2.0 a))))