lisp. Пример рекурсивного поиска значений квадратных корней

(define (square x)
    (* x x))

(define (abs x)
    (if (< x 0) (- x) x))

(define (average a b)
    (/ (+ a b) 2))

(define (sqrt-iter guess x)
    (if (good-enough? guess x) guess
        (sqrt-iter (improve guess x) x)))

(define (improve guess x)
    (average guess (/ x guess)))
   
(define (good-enough? guess x)
    (< (abs (- (square guess) x)) 0.01))
   
(define (sqrt x)
    (sqrt-iter 1.0 x))


Попробуем вызвать функцию sqrt

> (sqrt 4)
2.000609756097561

Как видно из результата, для приближения к более точным результатам необходимо задать большую точность.