1.11 练习答案-递归和迭代

SICP题目不容易,可以很大程度提高编程能力

递归
(define (f n)
  (if (< n 3) n
      (+ (f (- n 1)) (* 2 (f (- n 2))) (* 3 (f (- n 3)))))
  )


做迭代部分的时候一时没有理解的 a <- a + b, b <- a。
这里也是同样
在下一轮迭代前,参数应该为a <- a + 2 * b + 3 * c,b <- a, c <- b,知道这个道理就不难做了。

(define (f n)
  (f-iter 2 1 0 n)
  )

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

你可能感兴趣的:(编程,C++,c,Scheme,F#)