33 lines
680 B
Plaintext
33 lines
680 B
Plaintext
(defn accumulate-iter [comb null-val term next a b]
|
|
(defn iter [a result]
|
|
(if (> a b)
|
|
result
|
|
(iter (next a) (comb (term a) result))))
|
|
(iter a null-val))
|
|
|
|
(defn accumulate-recur [comb null-val term next a b]
|
|
(if (> a b)
|
|
null-val
|
|
(comb (term a)
|
|
(accumulate-recur comb null-val term next (next a) b))))
|
|
|
|
(defn add [a b]
|
|
(+ a b))
|
|
|
|
(defn mult [a b]
|
|
(* a b))
|
|
|
|
(defn id [n] n)
|
|
(defn inc [n] (+ n 1))
|
|
|
|
(defn sum [a b]
|
|
(accumulate-recur add 0 id inc a b))
|
|
|
|
(defn factorial [a b]
|
|
(accumulate-recur mult 1 id inc a b))
|
|
|
|
(var x 1)
|
|
(while (< x 10)
|
|
(printf "n=%d, sum 1-n: %d, factorial 1-n: %d" x (sum 1 x) (factorial 1 x))
|
|
(set x (+ x 1)))
|