SICP 習題1.10
題目要求
解題方法
遞歸計算
沒什麼好說的,單純的套用數學公式
1 (define (f n) 2 (if (< n 3) 3 n 4 (+ (f (- n 1)) (* 2 (f (- n 2))) (* 3 (f (- n 3)))) 5 ) 6 )
迭代計算
和斐波那契的計算一樣,只要記錄前三次的計算結果用於下一次計算
(define (f-iter a b c cnt) ( if (= cnt 1) (+ c (* b 2) (* 3 a)) (f-iter b c (+ c (* b 2) (* 3 a)) (- cnt 1)) ) ) (define (f n) ( if (< n 3) n (f-iter 0 1 2 (- n 2)) ) )