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: