首页 > 技术文章 > 海伦平方根算法(LISP描述)

pkuimyy 2020-12-10 20:52 原文

#lang racket

(define (average x y) (/ (+ x y) 2))
(define (square x) (* x x))
(define (abs x) (if (< x 0) (- x) x))
(define (improve guess x) (average guess (/ x guess)))
(define (good-enough? guess x) (< (abs (- (square guess) x)) 0.000000001))
(define (try guess x)
  (if (good-enough? guess x)
      guess
      (try (improve guess x) x)))
(define (sqrt x) (try 1 x))
(sqrt 2)

推荐阅读