; f(n) = n, n < 3, f(n) = f(n-1) + 2f(n-2) + 3f(n-3) n >= 3 (define (f1 n) (if (< n 3) n (+ (f1 (- n 1)) (* 2 (f1 (- n 2))) (* 3 (f1 (- n 3)))))) (define (f2 n) (if (< n 3) n (f-iter 2 1 0 n))) ; a = f(2), b = f(1), c = f(0) ; a <- a + 2b + 3c, b <- a, c <- b (define (f-iter a b c count) (if (< count 3) a (f-iter (+ a (* 2 b) (* 3 c)) a b (- count 1))))