上一页 1 ··· 5 6 7 8 9 10 11 下一页
摘要: 练习2.37这道题花了我太长的时间了,一开始我就把题目中的m看成了w。然后题中给出的dot-product的两个参数我还以为一个是向量另一个是矩阵。怎么算都算不出来,直到看到“返回求和...”里的w只有一个i而没有j。好了,那么开始按照题目的要求来做题了。既然发现了自己的错误,那么就知道了dot... 阅读全文
posted @ 2015-02-22 13:58 nomasp 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 练习2.36虽然accumulate正在变得越来越复杂,但我还并未完全领悟到它的深刻意义。不过直觉告诉对于序列的序列,我们要做的是依次取出它每个序列的第一个元素。此方法来源于网络,我一直都是想着用lambda来写,最后感觉太复杂了。没想到一个map就解决了问题。Lisp中的高阶函数果然不仅仅是函... 阅读全文
posted @ 2015-02-22 13:58 nomasp 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 练习2.35这道题中已经给定了accumulate和map,根据accumulate的参数可以很容易的知道题目中的2处需要我们补充的:(accumulate + 0 (map ...... 因为我们是要累加所有的树叶,这里就需要在map里有一个lambda来讲t中的树叶全部遍历出来,map的第二... 阅读全文
posted @ 2015-02-22 13:57 nomasp 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 练习2.34书中一开始有2个式子,一个是原式,一个根据Horner规则构造出的式子。而我们同样也可以将待求得式子写成这种方式,而且可以更进一步——那就是写成Lisp的前序表示:(+ 1 (* x (+ 3 (* x (+ 0 (* x (+ 5 (* x(+ 0 x) ) ) ) ) ) ) )... 阅读全文
posted @ 2015-02-22 13:57 nomasp 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 练习2.33既然要用到accumulate,那么我们先来回顾一下这个函数好了。其有三个参数,一个操作符,一个用来作为初始化的值,一个是需要运算的序列。题目中的map已有的定义如下:(define (map p sequence)(accumulate (lambda (x y) )nilsequ... 阅读全文
posted @ 2015-02-22 13:56 nomasp 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 练习2.31我想说我已经越来越喜欢抽象了,将上一题中的map版本的square-tree抽象的方法是添加一个参数f,f是一个函数,因此将square替换成f即可。如下。(define (map-tree f tree)(map (lambda (sub-tree)(if (pair? sub-t... 阅读全文
posted @ 2015-02-22 13:55 nomasp 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 练习2.30如果这道题感觉有点难度的话,可以回过头来看看75页定义的两个scale-tree。我的定义如下:(define (square-tree tree)(cond ((null? tree) ‘())((not (pair? tree)) (square tree))(else (con... 阅读全文
posted @ 2015-02-22 13:53 nomasp 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 练习2.29这种题,还有之前的那个rectangle的题目,对于变量、函数等的命名简直要让人疯掉。先来写出题目中的left-branch和right-branch吧。(define (left-branch mobile)(car mobile))(define (right-branch mo... 阅读全文
posted @ 2015-02-22 13:52 nomasp 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 练习2.28这道题是要我们找出树的所有树叶,参考第73页下面的count-leaves,当遍历这个树的时候也会有这三种情况:元素为空,元素不成对,以及元素成对。根据这个关系可以写出fringe如下:(define (fringe tree)(cond ((null? tree) ‘())((no... 阅读全文
posted @ 2015-02-22 13:52 nomasp 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 练习2.27又是修改程序的题目,要求我们写出的deep-reverse函数要将表中的元素也反转过来,这其中应该要用到递归来实现吧。(define (deep-reverse tree)(cond ((null? tree) ‘())((not (pair? tree)) tree)(else (... 阅读全文
posted @ 2015-02-22 13:51 nomasp 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 练习2.24其打印结果为:(1 (2 (3 4)))练习2.25(define x ‘(1 3 (5 7) 9))(cadr (caddr x));Value: 7(define y ‘((7)))(caar y);Value: 7(define z ‘(1 (2 (3 (4 (5 (6 7))... 阅读全文
posted @ 2015-02-22 13:50 nomasp 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 练习2.23这道题就有小小的难度了。(define (for-each f lst)(cond ((not (null? lst))(f (car lst))(for-each f (cdr lst)))))如果用上前面经常用到的begin和if,这里还有另一种for-each实现。(defin... 阅读全文
posted @ 2015-02-22 13:50 nomasp 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 练习2.22题目中Louis的第一个程序将items中的元素一个一个的取出来然后平方然后”推“到answer中。而我们在上一题中则是迭代结构,是将元素平方后”推“到一个大盒子中,而大盒子里又有一个元素被平方然后被”推“到另一个稍微小点的大盒子中去。而修改后的程序看似解决了问题,其实错得更加离谱了... 阅读全文
posted @ 2015-02-22 13:49 nomasp 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 练习2.21如果在看SICP这本书之前做过其他准备工作,或者看过我的【Scheme归纳】那几篇文章,那这些题都是小case了。(define (square-list items)(if(null? items)‘()(cons (square (car items)) (square-list... 阅读全文
posted @ 2015-02-22 13:48 nomasp 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 练习2.20如果读懂了题目的意思这道题也是不难的,重点就是带点尾部记法形式的define。下面我们就来写出same-parity过程。(define (same-parity fist . other)(filter (if (even? fist) even?odd?)(cons first ... 阅读全文
posted @ 2015-02-22 13:48 nomasp 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 练习2.19这道题的题目比较长,但是难度却不大的。无非就是用cons、car、cdr等等,就像前面的矩形啊点啊什么的。(define (first-denominationcoin-values)(car coin-values))(define (except-first-denominati... 阅读全文
posted @ 2015-02-22 13:47 nomasp 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 练习2.18这道题也不难,通过迭代来完成。不过我想整个过程,无论是两个define还是一个define,都只用一个参数,但还为完成,希望有谁会的在博文下面评论咯。(define (reverse list)(reverse-iter list ‘()))(define (reverse-iter... 阅读全文
posted @ 2015-02-22 13:47 nomasp 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 练习2.17这道题就比较简单了,直接可以写出如下:(define (last-pair list)(if (null? (cdr list))list(last-pair (cdr list)))) 版权声明:本文为 NoMasp柯... 阅读全文
posted @ 2015-02-22 13:46 nomasp 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 待添加 版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。 阅读全文
posted @ 2015-02-22 13:45 nomasp 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 练习2.6如果这道题还没有做的请务必要先自己思考并检验。如果没有能够求出来,也可以在看完我推导的one之后自己再来推导two。一开始我也不懂题目中的两个式子是什么意思,甚至连怎么用都不知道。但我猜测到是不是可以用这两个式子来构造出one,以及two,还有后面的无数多个。既然有了想法,那么就开工吧。我... 阅读全文
posted @ 2015-02-22 13:44 nomasp 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 练习2.5这道题的意思是有一个新的cons,其接受两个参数a、b,并且返回(2^a)*(3^b)。这个比较容易实现了。(define (cons a b)(* (expt 2 a) (expt 3 b)))(cons 2 2);Value: 36根据题中的意思,并将其与car和cdr类比,得知c... 阅读全文
posted @ 2015-02-17 20:10 nomasp 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 练习2.3我们并不必急于写出点什么,先来回过头看看书吧。第56页说到了一种称为按愿望思维的强有力的综合策略。在这道题里,我们就可以假设已经写好了能够表示矩形的代码,以及能够求矩形长和宽的函数。于是像先定义出add-rat一样,我们先定义出求矩形的周长和面机的函数。(define(get-peri... 阅读全文
posted @ 2015-02-17 20:09 nomasp 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 练习2.4直接运用对比的技巧就可以猜测出相应的cdr表示如下:(define (cdr z)(z (lambda (p q) q)))但我们还是要按照题中要求用代换模型来检验。先来检验car的。(car (cons 0 1))(car (lambda (m) (0 1)))((lambda (z... 阅读全文
posted @ 2015-02-17 20:09 nomasp 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 练习2.2(define(make-segment start-point end-point)(cons start-point end-point))(define(start-segment seg)(car seg))(define(start-segment seg)(cdr seg)... 阅读全文
posted @ 2015-02-17 20:08 nomasp 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 练习2.1我们已经进入了新的一章,这本书还是蛮会循序渐进的嘛,第一题挺简单的。(define(make-rat n d)(let ((g (gcd n d)))(if (< d 0)(cons (- (/ n g)) (- (/ d g)))(cons n d)))) ... 阅读全文
posted @ 2015-02-17 20:08 nomasp 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 练习1.46这道题要求我们写一个过程iterative-improve,其接受两个过程为参数,一个是判断检测是否足够好的good-enough?和另一个改进猜测的improve。其有一个猜测的数字作为参数,然后返回的是一个过程。我们先来写出这个iterative-improve过程。(defin... 阅读全文
posted @ 2015-02-17 20:06 nomasp 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 练习1.45如果看到前面的文章,应该知道我喜欢将某个变量n先设成一个固定的数比如3、4什么的。这里我们依旧如此,先来看看如何写出开四次方根的过程。这道题的目的旨在让我们好好回顾前面的内容,毕竟只剩下一道题我们就完完全全的解决了第一章。下面我来带大家一起回顾一下。fixed-point是以1个函数... 阅读全文
posted @ 2015-02-17 20:06 nomasp 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 练习1.44相信如果大家认真做了前面的几道习题,这一题就比较简单了。smooth过程几乎可以直接写出:(define smooth(lambda (f)(lambda (x)(/ (+ (f (- x dx))(f x)(f (+ x dx)))3))))当然,在这之前应该先将dx关联一个数值,... 阅读全文
posted @ 2015-02-17 20:05 nomasp 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 练习1.43我不想一开始就将结果贴出啦,而是通过叙述自己的思考来完成这篇博客。上一题中我在纸上写下“传入2个过程并返回1个过程”,事实证明挺有效的,于是这次我也依旧这么做了。repeated需要传入一个过程和一个数字,这个数字决定了这个过程的执行次数。repeated还要返回1个过程,而这个过程... 阅读全文
posted @ 2015-02-17 20:04 nomasp 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 练习1.42这道题让我彻底爱上了lambda。复合这一概念早在数学中便已经学过了,我们先来根据题目的意思写出能够平方和能够加一这两个过程。可能是因为我看书不认真吧,写了很多次才完成这两个过程。一开始我都是以(define (inc f)......)来开始的,但是每次都没有返回结果。终于醒悟了,... 阅读全文
posted @ 2015-02-17 20:03 nomasp 阅读(155) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 下一页