码迷,mamicode.com
首页 > 其他好文 > 详细

【SICP练习】7 练习1.11

时间:2015-02-05 16:26:09      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:sicp   scheme   lambda   lisp   loop   



这种题目太像是数学题目了,不过拿到编程上又有一些的难度。我们先根据题目中的条件,写出类似于第25页最下面的变换规则。我们先列出如下内容:

a-- f(n-1) f(2)  f(3)  f(4) f(5)

b-- f(n-2) f(1)  f(2)  f(3) f(4)

c—f(n-3) f(0)  f(1)  f(2) f(3)

于是继而得出下式:

a—a+2b+3c

b—a

c—b

于是核心部分已经出来了:

(f-iter (a+2b+3c) a b (- counter 1))

最终写成代码即可:

(define (f n)

         (f-iter1 0 0 n))

(define (f-iter a b c count)

         (if(= counter 0)

           b

           (f-iter (+ a (* 2 b) (* 3 c)) a b (- count1))))

类比其实是一个很好的学习方法,在博主的【Scheme归纳】3中,通过类比学习了几个很重要的关键字。

【SICP练习】7 练习1.11

标签:sicp   scheme   lambda   lisp   loop   

原文地址:http://blog.csdn.net/nomasp/article/details/43529079

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!