题目:函数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))