当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用Scheme代码求解二次方程?》经验,为你挑选了1个好方法。

我写了这个方案代码来计算二次方程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)))

但是,有人告诉我这个程序很难理解.为什么?

这个程序的清理版本会是什么样的?请让我知道为什么新程序会更容易理解.

谢谢



1> Jeremy Ruten..:

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

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

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

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有