SICP 問題1.11
;; 再帰的プロセス (define (f n) (if (< n 3) n (+ (f (- n 1)) (* 2 (f (- n 2))) (* 3 (f (- n 3)))))) ;; 反復的プロセス (define (g n) ;; iterでは3 ≦ nの時のみの処理.n1 はf(n-1),n2はf(n-2),n3はf(n-3) (define (iter n1 n2 n3 count) (if (= count 0) n1 (iter (+ n1 (* 2 n2) (* 3 n3)) n1 n2 (- count 1)))) (if (< n 3) n (iter 2 1 0 (- n 2)))) ;;3≦nの時iter.n=1,2の時はn1,n2に渡してあるのでcountに渡す引数は(- n 2)