2014-01-22 46 views
0
(define average (lambda (x y)(/ (+ x y) 2))) 
(define improve (lambda (guess X)(average guess (/ X guess)))) 
(define close-enuf? (lambda(guess X) (<(abs (- (* guess guess) X))0.1))) 
(define loop (lambda (guess X)(if close-enuf? guess X) guess (loop (improve guess X) X))) 
(loop 3 2) 

當我嘗試運行該程序時,它沒有給出任何輸出。我如何解決它?Scheme:平方根的遞歸性

+1

嘗試[DrRacket IDE](http://racket-lang.org/)。你得到正確的認同,突出顯示匹配的括號和關於什麼是錯誤的信息,當你運行它以及邏輯錯誤的調試器。 – Sylwester

回答

3

我建議你用更好的縮進樣式編寫代碼,因爲它會使錯誤更加明顯。

(define average 
    (lambda (x y)(/ (+ x y) 2))) 

(define improve 
    (lambda (guess X)(average guess (/ X guess)))) 

(define close-enuf? 
    (lambda(guess X) 
    (< (abs (- (* guess guess) X)) 0.5))) 

(define loop 
    (lambda (guess X) 
    (if close-enuf? guess X) ;; see the error here? (if (close-enuf? guess X) 
     guess (loop (improve guess X) X))) ;need another bracket here 

我得到了答案1 21145/50952。