問題1-11
明日の勉強会に向けて、予習がてら練習問題に取り組んでみました。まずは簡単そうなこの問題から取り組みましたが、反復プロセスの方の三つの引数の渡し方に手間取ってしまい、そこで今日は試合終了となってしまいました。しかし、なぞが解けた時の爽快感はたまらないものでした。この爽快感を忘れずに、今後もできるだけ自力で問題を解いていきたいと思っています。
ちなみに、再帰的プロセスの方では30程度でも、応答なし状態になってしまいましたが、反復プロセスならば、100でもあっという間に処理完了となり、アルゴリズムの重要性を再認識することができました。
(define (f n) (cond ((< n 3) n) (else (+ (f (- n 1)) (* 2 (f (- n 2))) (* 3 (f (- n 3)))))))
(define (f n) (f-iter 2 1 0 n)) (define (f-iter a b c cnt) (if (= cnt 0) c (f-iter (+ a (* 2 b) (* 3 c)) a b (- cnt 1)))) (f 0) (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8) (f 9) (f 100)
0 1 2 4 11 25 59 142 335 796 11937765839880230562825561449279733086