Tuesday, April 23, 2019

SICP in Clojure: Chapter 1, Exercise 9

This is my Clojure solution to Chapter 1, Exercise 9:

(ns sicp.ch1.ex09)

(defn add-1
  [a b]
  (if (zero? a)
    b
    (inc (add-1 (dec a) b))))

(defn add-2
  [a b]
  (if (zero? a)
    b
    (add-2 (dec a) (inc b))))

(add-1 5 10) ; => 15 -- a recursive process


(add-2 5 10) ; => 15 -- an iterative process

Saturday, April 20, 2019

SICP in Clojure: Chapter 1, Exercise 8

This is my Clojure solution to Chapter 1, Exercise 8:

(ns sicp.ch1.ex08)

(defn good-enough-cube-root?
  [guess x]
  (< (Math/abs (- (Math/pow guess 3) x)) 0.001))

(defn improve-cube-root
  [guess x]
  (/ (+ (/ x (Math/pow guess 2)) (* 2 guess))
     3))

(defn cube-root-iter
  [guess x]
  (if (good-enough-cube-root? guess x)
    guess
    (cube-root-iter (improve-cube-root guess x)
                    x)))