原创 計算機程序的構造和解釋 練習題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