24 lines
426 B
Scheme
24 lines
426 B
Scheme
; 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))))
|