代码改变世界

求一个数立方根

2013-09-12 12:02  zoo-code  阅读(302)  评论(0编辑  收藏  举报

;; The first three lines of this file were inserted by DrRacket. They record metadata
;; about the language level of this file in a form that our tools can easily process.
#reader(lib "htdp-advanced-reader.ss" "lang")((modname e18) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #t #t none #f ())))
(define (div-three x)
  (/ x 3.0))

;;(div-three 1 3)

(define (three-times x)
  (* x x x))

;;(three-times 2)

(define (square x)
  (* x x)
  )

;;(square 2)

(define (make-nums guess x)
  (+ (+ guess guess) (/ x (square guess))))
 
;;(make-nums 2 8)

(define (improve guess x)
  (div-three (make-nums guess x))
  )

;;(improve 2 8)

(define (good-enough? guess x)
  (< (abs (- (three-times guess) x)) 0.001))

;;(good-enough? 2 8)

(define (three-sqrt-iter guess x )
  (if (good-enough? guess x)
      guess
      (three-sqrt-iter (improve guess x) x)))

;;(three-sqrt-iter 2 8)

(define (three-sqrt x)
  (three-sqrt-iter 1.0 x))

(three-sqrt 27)

 

参考代码: crusher-someone