Learning/SICP/exercise_1_32.janet
2025-05-29 22:00:25 +02:00

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)))