50 lines
991 B
Plaintext
50 lines
991 B
Plaintext
(defn sum-recur [term next a b]
|
|
(if (> a b)
|
|
0
|
|
(+ (term a)
|
|
(sum-recur term next (next a) b))))
|
|
|
|
(defn sum-iter [term next a b]
|
|
(defn iter [a result]
|
|
(if (> a b)
|
|
result
|
|
(iter (next a) (+ result (term a)))))
|
|
(iter a 0))
|
|
|
|
(defn cube [n]
|
|
(* n n n))
|
|
(defn inc [n]
|
|
(+ n 1))
|
|
|
|
(defn simpsons-recur [f a b n]
|
|
(def h (/ (- b a) n))
|
|
(defn fapply [k]
|
|
(f (+ a (* k h))))
|
|
(defn add-two [k]
|
|
(+ k 2))
|
|
(* (/ h 3)
|
|
(+
|
|
(f a)
|
|
(f b)
|
|
(* 4 (sum-recur fapply add-two 1 n))
|
|
(* 2 (sum-recur fapply add-two 2 (- n 1))))))
|
|
|
|
(defn simpsons-iter [f a b n]
|
|
(def h (/ (- b a) n))
|
|
(defn fapply [k]
|
|
(f (+ a (* k h))))
|
|
(defn add-two [k]
|
|
(+ k 2))
|
|
(* (/ h 3)
|
|
(+
|
|
(f a)
|
|
(f b)
|
|
(* 4 (sum-iter fapply add-two 1 n))
|
|
(* 2 (sum-iter fapply add-two 2 (- n 1))))))
|
|
|
|
(print (sum-recur cube inc 1 10))
|
|
(print (sum-iter cube inc 1 10))
|
|
|
|
(print (simpsons-recur cube 0 1 100))
|
|
(print (simpsons-iter cube 0 1 100))
|