函数f由如下的规则定义:
如果n<3,那么f(n)=n;如果n>=3,那么f(n)=f(n-1)+2f(n-2)+3f(n-3)
1)递归计算
(define (fn3 n)
(if (< n 3)
n
(+ (fn3 (- n 1))
(* (fn3 (- n 2)) 2)
(* (fn3 (- n 3)) 3))
)
)
2)迭代计算
(define (fn4 n)
(cond ((= 0 n) 0);为了修正初始输入可能是0
((= 1 n) 1);为了修正初始输入可能是1
(else (fn5 0 1 2 n)));初始输入是2的时候,fn5刚好返回2,此处不用修正
)
(define (fn5 a b c counter)
(if (< counter 3)
c
(fn5 b c (+ (* 3 a) (* 2 b) (* 1 c)) (- counter 1))
)
)