diff options
Diffstat (limited to 'coding-exercises/1/36.rkt')
| -rw-r--r-- | coding-exercises/1/36.rkt | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/coding-exercises/1/36.rkt b/coding-exercises/1/36.rkt new file mode 100644 index 0000000..a785d8a --- /dev/null +++ b/coding-exercises/1/36.rkt @@ -0,0 +1,39 @@ +#lang racket +(require sicp) + +(define (fixed-point damper f first-guess) + (define (close-enough? v1 v2) + (< (abs (- v1 v2)) 0.0001)) + (define (try guess) + (let ((next (damper guess (f guess)))) + (newline) + (display next) + (if (close-enough? guess next) + next + (try next)))) + (try first-guess)) + +(define (golden-ratio) + (fixed-point + (lambda (x) (+ 1 (/ 1 x))) + 1.0)) + +(define (log1000) + (fixed-point + (lambda (guess next) + next) + (lambda (x) (/ (log 1000) (log x))) + 2.0)) + +(define (log1000-average-damped) + (define (average a b) + (/ (+ a b) 2)) + (fixed-point + (lambda (guess next) + (average guess next)) + (lambda (x) (/ (log 1000) (log x))) + 2.0)) + +(log1000) +(println " *** second time") +(log1000-average-damped) |
