24 lines
572 B
Scheme
24 lines
572 B
Scheme
#lang sicp
|
|
(define (iterative-improve good-enough?
|
|
improve)
|
|
(define (rec-procedure guess)
|
|
(define new-guess (improve guess))
|
|
(if (good-enough? guess new-guess)
|
|
new-guess
|
|
(rec-procedure new-guess)))
|
|
rec-procedure)
|
|
|
|
(define (square x)
|
|
(* x x))
|
|
|
|
(define (average a b)
|
|
(/ (+ a b)
|
|
2))
|
|
|
|
(define (sqrt x)
|
|
(define tolerance 0.000001)
|
|
(define (good-enough? guess)
|
|
(< (abs (- (square guess) x)) tolerance))
|
|
(define (improve guess)
|
|
(average guess (/ x guess)))
|
|
(iterative-improve good-enough? improve))
|