(define (f-recursive n) (if (< n 3) n (+ (f-recursive (- n 1)) (* 2 (f-recursive (- n 2))) (* 3 (f-recursive (- n 3)))))) (define (f-iterative n) ; a = f(i - 2) ; b = f(i - 1) ; c = f(i) (define (iterate i a b c) (if (= i n) c (iterate (+ i 1) b c (+ c (* 2 b) (* 3 a))))) (if (< n 3) n (iterate 2 0 1 2))) (define (f-iterative-2 n) ; a = f(n - i) ; b = f(n - i + 1) ; c = f(n - i + 2) ; Note: n is not used as a state variable (define (iterate i a b c) (if (= i 2) c (iterate (- i 1) b c (+ c (* 2 b) (* 3 a))))) (if (< n 3) n (iterate n 0 1 2)))