用牛顿法求解平方根,本质上是一个不断逼近的过程。就是说,对一个猜测数字的平方与原数字比较,如果相差不大,那最终的结果就是它。
每一次运算,都会求出猜测值y与x/y的平均数,作为下一次猜测的y值,直到满足条件为止。
#lang racket
(define (sqrt-iter x guess)
(if (< (abs (- x (sqrt guess))) 0.001)
guess
(sqrt-iter x (get-avg x guess))))
(define (get-avg x guess)
(/ (+ (/ x guess) guess) 2))
(define (sqrt x)
(* x x))
(sqrt-iter 2 1)