f(n)=f(n-1)+2f(n-2)+3f(n-3)を計算する問題。
再帰的プロセスは書き下すだけでできる。
(define (recursive-f n) (if (< n 3) n (+ (recursive-f (- n 1)) (* 2 (recursive-f (- n 2))) (* 3 (recursive-f (- n 3))))))
反復的プロセスが相変わらずきびしい。
フィボナッチのヒントがなければわからなかったような悪寒がする。
(define (iterative-f n) (define (iterative-f-iter a b c n) (cond ((= n 1) b) ((= n 2) a) (else (iterative-f-iter (+ a (* 2 b) (* 3 c)) a b (- n 1))))) (iterative-f-iter 2 1 0 n))