Created
May 2, 2012 08:29
-
-
Save sandy98/2575074 to your computer and use it in GitHub Desktop.
Square root (method by Hal Abelson in SICP MIT course) - Python and Scheme version.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def average(v1, v2): | |
return (v1 + v2) / 2.0 | |
def square(n): | |
return n * n | |
def sqrt(n): | |
def improve(guess): | |
return average(guess, n / guess) | |
def good_enough(guess): | |
return abs(square(guess) - n) < 0.00000000001 | |
def tryit(guess): | |
if good_enough(guess): | |
return guess | |
else: | |
return tryit(improve(guess)) | |
return tryit(1) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(define average (lambda (v1 v2) (/ (+ v1 v2) 2))) | |
(define square (lambda (n) (* n n))) | |
(define (sqrt n) | |
(define (improve guess) | |
(average guess (/ n guess))) | |
(define (good-enough? guess) | |
(< (abs (- (square guess) n)) 0.0000000001)) | |
(define (tryit guess) | |
(if (good-enough? guess) | |
guess | |
(tryit (improve guess)))) | |
(tryit 1)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment