In this exercise, we are asked to write a procedure to compute the function f:

f(n) = n, n < 3
f(n) = f(n-1) + 2*f(n-2) + 3*f(n-3), n ≥ 3

A procedure that computes `f`

by means of a recursive process is easy and can be written as:

(define (f n)
(if (< n 3) n
(+ (f (- n 1))
(* 2 (f (- n 2)))
(* 3 (f (- n 3))))))

To write an iterative procedure, we observe that for the computation of , only the values of , and are needed. Leveraging this, we can write an iterative procedure where these three values are passed as arguments:

(define (f n)
(if (< n 3) n
(f-iter 2 1 0 (- n 2))))
(define (f-iter n1 n2 n3 left)
(if (= left 0) n1
(f-iter (+ n1 (* 2 n2) (* 3 n3))
n1
n2
(- left 1))))

### Like this:

Like Loading...

*Related*