1)牛顿法求平方根:
公式:(y + x/y) / 2,首先猜测为1,然后逐渐逼近。
(defun sqrt-iter (guess x)
(if (good-enough? guess x)
guess
(sqrt-iter (improve guess x)
x)))
(defun improve (guess x)
(average guess (/ x guess)))
(defun average (x y)
(/ (+ x y) 2))
(defun good-enough? (guess x)
(< (abs (- (square guess) x)) 0.001))
(defun square (x)
(* x x))
(defun sqrt (x)
(sqrt-iter 1.0 x))
2)牛顿法求立方根
公式:(x/(y^2) + 2y)/3
(defun cube-iter (guess x)
(if (good-enough? guess x)
guess
(cube-iter (improve guess x)
x)))
(defun improve (guess x)
(average (* 2 guess) (/ x (* guess guess))))
(defun average (x y)
(/ (+ x y) 3))
(defun good-enough? (guess x)
(< (abs (- (cube guess) x)) 0.001))
(defun cube (x)
(* x x x))
(defun cube-root (x)
(cube-iter 1.0 x))