SICP
sen9ob
这个作者很懒,什么都没留下…
展开
-
1.11 练习答案-递归和迭代
SICP题目不容易,可以很大程度提高编程能力递归[code="Scheme"](define (f n) (if (< n 3) n (+ (f (- n 1)) (* 2 (f (- n 2))) (* 3 (f (- n 3))))) )[/code]做迭代部分的时候一时没有理解的 a ...2009-10-14 17:46:27 · 119 阅读 · 0 评论 -
SICP 1.32 答案
从之前写好的代码可以很容易写出递归版[code="scheme"](define (accumulate combiner null-value term a next b) (if (> a b) null-value (combiner (term a) (accumulate combiner null-value term (next a) n...2009-11-13 14:37:47 · 87 阅读 · 0 评论 -
SICP 1.33 答案
我的代码有点丑陋。。。不过算了,练习而已[code="scheme"](define (filtered-accumulate combiner null-value filter term a next b) (define (filter-work x) (if (filter x) (term x) null-value)) (if (> a ...2009-11-13 15:16:43 · 70 阅读 · 0 评论 -
SICP 1.37 答案
经过8次迭代就能达到精度的要求递归版[code="scheme"](define (cont-frac n d k) (if (< k 0) 0 (/ (n k) (+ (d k) (cont-frac n d (- k 1))))))[/code]迭代版[code="scheme"](define (cont-frac n d k) (defin...2009-11-13 17:37:48 · 76 阅读 · 0 评论 -
SICP 2.2 习题答案
cons对于数据结构来说是一个很强大的东西[code="scheme"](define (print-point p) (newline) (display "(") (display (x-point p)) (display ",") (display (y-point p)) (display ")"))(define (make-poin...2009-12-11 17:32:21 · 165 阅读 · 0 评论 -
SICP 2.3 习题答案
可能书上想让我用2.2的答案,实在不想那么搞。。。[code="scheme"](define (make-point x y) (cons x y))(define (x-point p) (car p))(define (y-point p) (cdr p))(define (make-rect left-top right-bottom) (cons left-top...原创 2010-01-11 12:06:34 · 85 阅读 · 0 评论 -
SICP 2.4 习题答案
小小试了一下,结果应该没有错[code="scheme"](define (cdr z) (z (lambda (p q) q)))[/code]原创 2010-01-11 13:57:34 · 134 阅读 · 0 评论 -
SICP 2.5 习题答案
通过数学的方法可以解决,假设乘积n不是偶数,那a肯定是0。[code="scheme"](define (power x n r) (if (< n 1) r (power x (- n 1) (* r x))))(define (cons a b) (* (power 2 a 1) (power 3 b 1)))(define (car n) (d...原创 2010-01-11 15:34:49 · 106 阅读 · 0 评论 -
SICP 2.6 习题答案-lambda算子
2.6这道题目需要一些lambda算子的知识,g9的blog有很不错的文章翻译了。具体是这样的,首先是one,one即为zero add-1,所以把zero代入add-1的表达式中,得:[code="scheme"]lambda (f) (lambda (x) (f (((lambda (f) (lambda (x) x)) f) x)))[/code]将f代入zero的lambd...原创 2010-01-12 18:03:42 · 101 阅读 · 0 评论 -
SICP 2.7~2.16习题答案
这一段的题目有点多,都是要有前面的代码的,写到一起得了2.13用代数式看一下就知道了,比较容易。2.14用代码试试看就知道了,感觉操作会引起误差,但不知道为什么,2.15,2.16同样但是通过2.14的结果就知道,2.15的结论应该是对的,除法运算并没有引入新的误差。2.2节开始进入令人愉快的数据结构了,^_^。令人期待。[code="scheme"](define...原创 2010-01-18 15:28:04 · 197 阅读 · 0 评论 -
SICP 2.25~2.29习题答案
这一节难度开始加大,有一些答案是借鉴了别人才做出来的。[code="scheme"];; 2.25(define list1 (list 1 3 (list 5 7) 9));(car (cdr (car (cdr (cdr list1)))))(define list2 (list (list 7)));(car (car list2))(define list3...原创 2010-01-25 17:00:52 · 145 阅读 · 0 评论 -
SICP 1.30 答案
没有什么好解释,直接看代码[code="scheme"](define (sum term a next b) (define (iter a result) (if (> a b) result (iter (next a) (+ (term a) result)))) (iter 0 0))[/code]...2009-11-11 18:44:36 · 71 阅读 · 0 评论 -
SICP 1.12 练习答案-树形递归
很简单,但是用迭代没做出来,有点困难。不知道怎么判断什么时候该结束。[code="scheme"](define (pascal-triangle row col) (if (or (= col 1) (= col row)) 1 (+ (pascal-triangle (- row 1) (- col 1)) (pascal-triangle (- row 1) co...2009-10-15 15:21:44 · 92 阅读 · 0 评论 -
SICP 1.16 - 递归转换为迭代
题目很简单,只要设定一个变量来返回结果和做必要的存储就可以了。[code="scheme"](define (fastexpt a b n p) (cond ((= n 0) p) ((= (remainder n 2) 1) (fastexpt (* a b) b (- n 1) (+ p 1))) (else (fastexpt a (* b ...2009-10-19 11:14:24 · 83 阅读 · 0 评论 -
SICP 1.19 习题答案
这道题需要一些数学知识,题目中已经提示:[quote]Show that if we apply such a transformation Tpq twice, the effect is the same as using a single transformation Tp'q' of the same form, and compute p' and q' in terms of p ...2009-10-20 16:14:02 · 140 阅读 · 0 评论 -
SICP 1.21 答案
很简单[code="Scheme"](define (smallest-divisor n) (find-divisor n 2))(define (find-divisor n test-divisor) (cond ((> (* test-divisor test-divisor) n) n) ((divides? test-divisor n) te...2009-11-10 16:13:01 · 59 阅读 · 0 评论 -
SICP 1.22 答案
程序写出来了,但是时间没打印,DrScheme不支持。。。[code="Scheme"](define (smallest-divisor n) (find-divisor n 2))(define (find-divisor n test-divisor) (cond ((> (* test-divisor test-divisor) n) n) ((d...2009-11-10 17:54:35 · 105 阅读 · 0 评论 -
SICP 1.29 答案
感觉做这个题目是要形成一种思想,这个算法很牛,比书题目上面的那个算法精确多了。[code="scheme"](define (simpson-intergral f a b n) (define (inc-a x) (+ x 1)) (define (h) (/ (- b a) n)) (define (y x) (+ a (* x (h))...2009-11-11 18:36:38 · 92 阅读 · 0 评论