Sicp Exercise 1.11

Exercise 1.11. A function f is defined by the rule that f(n) = n if n<3 and f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3) if n> 3. Write a procedure that computes f by means of a recursive process. Write a procedure that computes f by means of an iterative process.

(define (add3 a1 a2 a3)
(+
a1
(+
(* 2 a2)
(* 3 a3))))
;; Recursive
(define (f n)
(cond
((< n 3) n)
((> n 2)
(add3
(f (- n 1))
(f (- n 2))
(f (- n 3))))))
;; Iterative
(define
(f-iter
a1
a2
a3
count)
(if
(= count 3)
a1
(f-iter
(add3 a1 a2 a3)
a1
a2
(- count 1))))