SICP学习笔记(1):

[0]:学会了基本使用scheme命令行和基本表达式:

(1)第一个代码文本里面,用前缀表达式来定义计算.
;The first program

(define x (+ (* 3
                (+(* 2 4)
                  (+ 3 5)))
             (+(- 10 7)
               6)))
(define A (* x x))

(2)定义过程:

一般形式:(define ((name formal parameters)(body))

(define (square x)   (* x x))
(define (add  x1 x2) (+ x1 x2))
(define (sub  x1 x2) (- x1 x2))
(define  (div x1 x2)  (/ x1 x2))
定义一个复合过程:
(define (f a) (+ (square (+ a 1)) (square (* a 2))))

运用条件判断:

(define (abs x) (if(< x 0) (- x) x))

练习1.2:将(5+4+(2-(3-(6+4/5))))/(3(6-2)(2-7))变换为前缀表达式:

(define s (/ (+ 5 4 (- 2 
             (- 3 (+ 6 (/ 4 5)))))
   (* 3 (- 6 2) (- 2 7))))

练习1.3 求出3个参数中较大两个数的和:

注意应该考虑相等的特殊情况

(define (max_add x y z) (if(and (<= x y) (<= x z)) (+ (* y y) (* z z)) 
                         (max_add y z x)
                        );processure body
)

练习1.5:

#define (p) (p)
#(define (test x y)
 (if (=  x 0 ) 0 y))
(test 0 (p))

请说明在不同求值顺序的情况下出现的情况:

[1]:正则求序,直接得到0,因为这种情况下test被直接展开,然后根本不会调用(p)

[2]:应用求序,先求出各个子表达式的值,这样就会陷入无限递归.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值