函数f由如下的规则定义:
如果n<3,那么f(n)=n;如果n>=3,那么f(n)=f(n-1)+2f(n-2)+3f(n-3)
递归定义:
(define fun
(lambda (n)
(if (< n 3)
n
(+ (fun (- n 1))
(* 2 (fun (- n 2)))
(* 3 (fun (- n 3)))))))
迭代的过程定义:
(define fun2
(lambda (n)
(if (< n 3)
n
(do ([i 3 (+ i 1)]
[n3 0 n2]
[n2 1 n1]
[n1 2 (+ n1 (* 2 n2) (* 3 n3))]
)
( (= i n) (+ n1 (* 2 n2 ) (* 3 n3)))))))
迭代和递归定义略有不同。