zoukankan      html  css  js  c++  java
  • SICP学习笔记 第二章 (2.1)

    基本过程:

    1 (cons n d)
    2 (car x)
    3 (cdr x)

    部分习题:

    exercise 2.1

    1 (define (make-rat n d)
    2     (let ((g (gcd n d)))
    3         (if (negative? (* n d))
    4             (cons (- (abs (/ n g))) (abs (/ d g)))
    5             (cons (abs (/ n g)) (abs (/ d g))))))

    exercise 2.2

     1 (define (average x y)
     2     (/ (+ x y) 2))
     3 (define (make-point x y)
     4     (cons x y))
     5 (define (x-point p)
     6     (car p))
     7 (define (x-point p)
     8     (cdr p))
     9 (define (make-segment start end)
    10     (cons start end))
    11 (define (start-segment segment)
    12     (car segment))
    13 (define (end-segment segment)
    14     (cdr segment))
    15 
    16 (define (midpoint-segment segment)
    17     (let ((start-point (start-segment segment))
    18           (end-point (end-segment segment)))
    19         (cons (average (x-point start-point) (x-point end-point))
    20               (average (y-point start-point) (y-point end-point)))))

    exercise 2.4

     1 (define (cdr z)
     2     (z (lambda (p q) q)))
     3 
     4 ;代换模型
     5 (cdr (cons x y))
     6 
     7 ((lambda (m) (m x y))
     8  (lambda (p q) q))
     9 
    10 ((lambda (p q) q)
    11  (x y))
    12 
    13 y

    exercise 2.5

    1 (define (cons x y)
    2     (define (dispatch m)
    3         (cond ((= m 0) x)
    4               ((= m 1) y)
    5               (else (* (expt 2 x) (expt 3 y)))))
    6     (dispatch))
    7 (define (car z) (z 0))
    8 (define (cdr z) (z 1))

    exercise 2.7

    假定 make-interval 的两个参数由小到大排列。

    1 (define (upper-bound interval)
    2     (cdr interval))
    3 (define (lower-bound interval)
    4     (car interval))

    exercise 2.8

    1 (define (sub-interval x y)
    2     (let ((xl (lower-bound x))
    3          (xu (upper-bound x))
    4          (yl (lower-bound y))
    5          (yu (upper-bound y)))
    6         (make-interval (- (min xl yl) (max xl yl))
    7                        (- (max xu yu) (min xu yu)))))
  • 相关阅读:
    C++实现base64编码
    php实现base64编码
    美团2016研发工程师笔试题(绑鞋带问题)
    URL encode 与 URL decode 的C语言实现
    常用排序算法集合-C实现
    用文件实现计算器要求多进程同时写
    vim操作命令-笔记
    Can't connect to local MySQL server through socket
    小程序页面跳转数据丢失
    Vue路由 --登录状态的判断
  • 原文地址:https://www.cnblogs.com/sungoshawk/p/2753041.html
Copyright © 2011-2022 走看看