問1.11

再帰的プロセス


▼n < 3
f(n) = n
▼n >= 3
f(n) = f(n-1) + 2f(n-2) + 3f(n-3)

f(0) = 0
f(1) = 1
f(2) = 2

f(3) = 2 + 2*1 + 3*0 = 4

f(4) = 4 + 2*2 + 3*1 = 11

f(5) = 11 + 2*4 + 3*2 = 25

(defun ff (n)
(cond ((< n 3) n)
(t (+ (ff (- n 1)) (+ (* 2 (ff (- n 2))) (+ (* 3 (ff (- n 3)))))))))
ff

(ff 5)
25

反復的プロセス

(defun ff-iter (a b c count)
(cond ((= count 0) c)
(t (ff-iter b c (+ c (+ (* 2 b) (* 3 a))) (- count 1)))))
ff-iter

(defun ff (n) (ff-iter 0 1 2 (- n 2)))
ff

(ff 5)
25

寝不足であたまがぼーっとする