计算机程序的构造和解释 习题 1.11

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

 

你可能感兴趣的:(计算机程序的构造和解释 习题 1.11)