Skip to content
tadruj edited this page Nov 22, 2014 · 2 revisions

Learning by comparing

    #lang racket

    (define (factorial n)
      (if (<= n 0)
          1
          (* n (factorial (- n 1)))))

    (define (factorial-tail n)
      (define (factorial-tail-helper n accum)
        (if (<= n 0)
            accum
            (factorial-tail-helper (- n 1) (* accum n))))
      (factorial-tail-helper n 1))

    (define (sqrt-ours x guess epsilon)
      (if (close-enough x guess epsilon)
          guess
          (sqrt-ours x (generate-guess x guess) epsilon)))

    (define (generate-guess x guess)
      (/ (+ (/ x guess) guess) x))

    (define (close-enough x guess epsilon)
      (< (abs (- x (* guess guess))) epsilon))

Clone this wiki locally