(define (f n)
(if (< n 3)
n
(fn-iter 0 1 2 n)))
(define (fn-iter a b c count)
(if (< count 3)
c
(fn-iter
b
c
(+ (+ c (* 2 b)) (* 3 a))
(- count 1))))
以上方法是线性迭代
(define (f n)
(cond ((= n 0) 0)
((= n 1) 1)
((= n 2) 2)
(else (+ (+ (f (- n 1)) (* 2 (f (- n 2)))) (* 3 (f (- n 3)))))))
以上方法是线性递归