原创 計算機程序的構造和解釋 練習題2.56
#lang racket (define (deriv exp var ) (cond ((number? exp) 0) ((variable? exp) (if (same-variab
原创 計算機程序的構造和解釋 練習題2.60
重複的表在adjoin-set過程就可以直接把元素加入集合中,複雜度降爲θ(1),union-set降爲θ(n),其他的element-of-set和intersection-set保持原來的複雜度不變。其實這就是犧牲了內存的
原创 計算機程序的構造和解釋 練習題2.59
#lang racket (define (element-of-set? x set) (cond ((null? set) #f) ((equal? x (car set)) #t) (el
原创 計算機程序的構造和解釋 練習題2.61
跟element-of-set?一樣的道理,當元素大於當時的set表時,就說明元素根本不在這個表裏,所以將元素直接插入到當時表的前面就可以了。 最壞的情況還是把表循環了一遍,最好的情況是隻循環了一次,這樣平均的步數就是n/2次。
原创 計算機程序的構造和解釋 練習題2.55
寫出運算的過程 (car ''abracadabra) (car '(quote abracadabra)) (car (quote (quote abracadabra))) 第二個表達式可以看出來’(quote abraca
原创 計算機程序的構造和解釋 練習題2.54
#lang racket (define (equal? a b) (cond ((and (null? a) (null? b)) #t) ((and (not (pair? a)) (not (pair?
原创 計算機程序的構造和解釋 練習題2.53
#lang racket (define (memq item x) (cond ((null? x) false) ((eq? item (car x)) x) (else (memq ite
原创 計算機程序的構造和解釋 練習題2.46
#lang racket (define (make-vect x y) (cons x y)) (define (xcor-vect v) (car v)) (define (ycor-vect v) (cdr v)
原创 計算機程序的構造和解釋 練習題2.49
前面幾個方法是基本的畫圖方法 #lang racket (#%require 2htdp/image) (#%require lang/posn) (#%require racket/base) (define *curren
原创 計算機程序的構造和解釋 練習題2.50
#lang racket (#%require 2htdp/image) (#%require lang/posn) (#%require racket/base) (define *current-image* empty-
原创 計算機程序的構造和解釋 練習題2.47
#lang racket (define (make-vect x y) (cons x y)) (define (xcor-vect v) (car v)) (define (ycor-vect v) (cdr v)
原创 計算機程序的構造和解釋 練習題2.48
#lang racket (define (make-vect x y) (cons x y)) (define (xcor-vect v) (car v)) (define (ycor-vect v) (cdr v)
原创 計算機程序的構造和解釋 練習題2.52
#lang racket (#%require 2htdp/image) (#%require lang/posn) (#%require racket/base) (define *current-image* empty-
原创 計算機程序的構造和解釋 練習題2.51
#lang racket (#%require 2htdp/image) (#%require lang/posn) (#%require racket/base) (define *current-image* empty-
原创 計算機程序的構造和解釋 練習題2.45
#lang racket (require (planet "sicp.ss" ("soegaard" "sicp.plt" 2 1))) (define (split first second) (lambda (pai