您的位置:首页 > 其它

SICP 练习1.11

2012-10-27 23:59 162 查看
题目:函数f由如下的规则定义:如果n < 3,那么f(n) = n;如果n >= 3,那么f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3)。请写一个采用递归计算过程计算f的过程。再写一个采用迭代计算过程计算f的过程。

1、采用递归计算过程计算f的过程:

(define (func n)
(if (< n 3)
n
(+ (func (- n 1))
(* 2 (func (- n 2)))
(* 3 (func (- n 3))))))


2、采用迭代计算过程计算f的过程:

(define (func-iter a b c count max-count)
(if (< max-count 3)
max-count
(if (> count max-count)
c
(func-iter b
c
(+ c
(* 2 b)
(* 3 a))
(+ count 1)
max-count))))

(define (func n)
(func-iter 0 1 2 3 n))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: