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