SICP
bysoulwarden
这个作者很懒,什么都没留下…
展开
-
SICP 1.28费马检查与Miller-Rabin检查的思考
费马小定理有两种形式:(p为不能整除a的素数)1.a^p≡a(mod p)2.a^(p-1)≡1(mod p)a费马检查使用第一种形式,Miller-Rabin检查使用第二种形式。能完全通过费马检查的数称为绝对假素数,即Carmichael数。而Carmichael数不能完全通过Miller-Rabin检查。这是因为费马小定理的逆定理不成立,即存在a^p≡a(mod p)成原创 2017-04-07 11:51:12 · 371 阅读 · 0 评论 -
SICP 正则序与应用序
正则序:表达式过程展开,直到只包含基本运算符的表达式。遇到特殊过程,先按特殊过程求值。应用序:表达式中每个对象都进行代换,逐层进行。原创 2017-03-29 22:07:43 · 401 阅读 · 0 评论 -
SICP 1.11迭代计算方式实现
(define (three n) (three-iter 2 1 0 (- n 2)))(define (three-iter b m s count) (if(= count 0) b (three-iter (+ b (* m 2)(* s 3)) b m (- count 1))))默认n>=3。原创 2017-03-29 21:51:46 · 226 阅读 · 0 评论 -
SICP 1.12
(define (pt row col) (cond ((= row col) 1) ((= col 1) 1) (else (+ (pt (- row 1)(- col 1)) (pt (- row 1) col)))))原创 2017-03-30 19:31:17 · 289 阅读 · 0 评论 -
SICP 1.41 lambda函数嵌套展开的思考
#lang scheme(define (double f) (lambda(x)(f(f x))))(define (inc x) (+ x 1))(((double (double double)) inc) 5)结果为21,说明Inc被调用了16次。在直觉上,double调用两次,(double double)调用4次,(double (double doub原创 2017-04-16 12:02:56 · 567 阅读 · 0 评论 -
SICP 1.43
#lang scheme(define (compose f g) (lambda(x)(f(g x))))(define (inc x) (+ x 1))(define (square x) (* x x))(define (repeated term n ) (if(> n 0) (compose (repeated term (- n 1)) term)原创 2017-04-16 13:41:13 · 225 阅读 · 0 评论 -
SICP 1.45 n次方根
#lang scheme(define (compose f g) (lambda(x)(f(g x))))(define (repeated term n ) (if(> n 1) (compose (repeated term (- n 1)) term) term ))(define (average-damp f) (lambda(x) (averag原创 2017-04-17 09:50:50 · 246 阅读 · 0 评论 -
SICP 2.54 符号列表equal?
(define (equal? x y) (cond((and (pair? x) (pair? y)) (and(equal? (car x) (car y)))) ((and (not (pair? x)) (not (pair? y))) (eq? x y)) (else false)))(equal? '(a b c d)原创 2017-06-09 21:59:02 · 222 阅读 · 0 评论