我寫了這個計劃的代碼來計算二次方程的一個解決方案X2 + B X + C = 0使用Scheme代碼求解二次方程?
(define (solve-quadratic-equation a b c) (define disc (sqrt (- (* b b) (* 4.0 a c)))) (/ (+ (- b) disc) (* 2.0 a)))
然而,有人告訴我,這個過程是很難理解的。爲什麼?
此過程的清理版本是什麼樣的? 請讓我知道爲什麼新程序會更容易理解。
感謝
我寫了這個計劃的代碼來計算二次方程的一個解決方案X2 + B X + C = 0使用Scheme代碼求解二次方程?
(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))
寫這樣的表達幫助我們自己遵循一種被稱爲漂亮打印的格式化約定,其中每個長組合被寫入以便操作數垂直對齊。由此產生的縮進清楚地顯示了表達式的結構。
是不是計劃開發一種語言來解決問題?我承認我不知道太多的方案,但我會添加一些縮進並添加一個方形定義。
(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))))