共享和相等
来源:互联网 发布:ios软件推荐 编辑:程序博客网 时间:2024/05/17 22:40
参考这里
;3.16(define (count-pairs x) (if (not (pair? x)) 0 (+ (count-pairs (car x)) (count-pairs (cdr x)) 1)));;4个(define x '(a b))(define y (cons (cdr x) x))(count-pairs y);;7个(define x '(a))(define y (cons x x))(define z (cons y y));3.17(define (safe-count-pairs x) (define (rec-trace x trace) (if (or (not (pair? x)) (memq x trace)) trace (rec-trace (cdr x) (rec-trace (car x) (cons x trace))))) (define (length seq len) (if (null? seq) len (length (cdr seq) (+ len 1)))) (length (rec-trace x '()) 0));3.18(define (last-pair x) (if (null? (cdr x)) x (last-pair (cdr x))));下面3个检测过程都是破坏性的;这是错误的,因为用的是equal?,不唯一(define (loop? x) (define identity (cons '() '())) (cond ((null? x) #f) ((equal? identity (car x)) #t) (else (set-car! x identity) (loop? (cdr x)))));;下面的两个版本都创建了一个真正唯一的identity,使用的是共享(define (loop?-1 x) (define identity (cons '() '())) (define (loop?-iter x) (cond ((null? x) #f) ((eq? identity (car x)) #t) (else (set-car! x identity) (loop?-iter (cdr x))))) (loop?-iter x))(define (loop?-2 x) (let ((identity '(()))) (define (loop?-iter x) (cond ((null? x) #f) ((eq? identity (car x)) #t) (else (set-car! x identity) (loop?-iter (cdr x))))) (loop?-iter x)));3.19(define (loop?-3 x) (define (loop?-iter x y) (cond ((eq? x y) #t) ((or (null? (cdr x)) (null? (cdr y)) (null? (cddr y))) #f) ((loop?-iter (cdr x) (cddr y))))) (cond ((or (null? x) (null? (cdr x))) #f) (else (loop?-iter x (cdr x)))))(define x '(1 (2 3) 1))(define loop (begin (set-cdr! (last-pair x) x) x))
0 0
- 共享和相等
- 【js】严格相等和抽象相等
- JavaScript中的宽松相等和严格相等
- 数列和相等
- 对象相等和一致性
- JavaScript相等和全等
- 求相等和
- 相等和全等
- 3.4.1 标识和相等
- Javascript的真值和相等
- X和!!X 相等么?
- Integer 和 int 判断相等
- 字符串比较和相等判断
- 相同和相等的区别。。。
- 0和1相等串
- Java常见问题之引用相等性和对象相等性
- typeof,松散相等性和严格相等性
- JavaScript 相等和绝对相等(===)
- android获取根View的方法
- assert
- The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure
- Linux之vi编辑器
- leetcode #34 in cpp
- 共享和相等
- C++学习步骤 - 09年旧文
- form表单提交中文乱码的详细解析
- android studio 中几个常用的快捷组合键!(win下)
- 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
- ClassLoader,ASM,Cglib,Bytecode
- Qt的paint函数重写,以及QPaint给一条线绘制箭头
- 改变状态栏样式
- 霍夫变换(Hough Transform)