This is my Clojure solution to Chapter 1, Exercise 35:
(ns sicp.ch1.ex35)
;; x = 1 + 1 / x
;; x^2 = x + 1
;; x^2 - x - 1 = 0
;; => use quadratic formula
(def tolerance 0.00001)
(defn close-enough?
[v1 v2]
(< (Math/abs (double (- v1 v2))) tolerance))
(defn try-guess
[f guess]
(let [next-guess (f guess)]
(if (close-enough? guess next-guess)
next-guess
(try-guess f next-guess))))
(defn fixed-point
[f first-guess]
(try-guess f first-guess))
(double (fixed-point #(inc (/ 1 %)) 1)) ; => 1.618032786885246
(ns sicp.ch1.ex35)
;; x = 1 + 1 / x
;; x^2 = x + 1
;; x^2 - x - 1 = 0
;; => use quadratic formula
(def tolerance 0.00001)
(defn close-enough?
[v1 v2]
(< (Math/abs (double (- v1 v2))) tolerance))
(defn try-guess
[f guess]
(let [next-guess (f guess)]
(if (close-enough? guess next-guess)
next-guess
(try-guess f next-guess))))
(defn fixed-point
[f first-guess]
(try-guess f first-guess))
(double (fixed-point #(inc (/ 1 %)) 1)) ; => 1.618032786885246
No comments:
Post a Comment