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)) 
    )
)

 

Tags: