There are a couple of mistakes in the code, including misplaced parentheses. For starters, good-enough?
as defined for the exercise 1.7, should look like this:
(define (good-enough? guess-old guess-new)
(< (/ (abs (- guess-old guess-new)) guess)
(/ 0.001 guess)))
And sqrt-iter
, as written in your code, will lead to an infinite recursion. Try this instead:
(define (sqrt-iter guess-old guess-new x)
(if (good-enough? guess-old guess-new)
guess-new
(sqrt-iter guess-new (improve guess-new x) x)))
(define (my-sqrt x)
(sqrt-iter 0.0 1.0 x))