习题2.17,直接利用list-ref和length过程
<!---->(define (last-pair items)
(list (list-ref items (- (length items) 1))))
习题2.18,采用迭代法
<!---->(define (reverse-list items)
(define (reverse-iter i k)
(if (null? i) k (reverse-iter (cdr i) (cons (car i) k))))
(reverse-iter items ()))
习题2.20,如果两个数的奇偶相同,那么他们的差模2等于0,根据这一点可以写出:
<!---->(define (same-parity a . b)
(define (same-parity-temp x y)
(cond ((null? y) y)
((= (remainder (- (car y) x) 2) 0)
(cons (car y) (same-parity-temp x (cdr y))))
(else
(same-parity-temp x (cdr y)))))
(cons a (same-parity-temp a b)))
利用了基本过程remainder取模
习题2.21,递归方式:
<!---->(define (square-list items)
(if (null? items)
items
(cons (square (car items)) (square-list (cdr items)))))
利用map过程:
<!---->(define (square-list items)
(map square items))
习题2.23,这与ruby中的each是一样的意思,将操作应用于集合的每个元素:
<!---->(define (for-each proc items)
(define (for-each-temp proc temp items)
(if (null? items)
#t
(for-each-temp proc (proc (car items)) (cdr items))))
(for-each-temp proc 0 items))
最后返回true
习题2.24,盒子图就不画了,麻烦,解释器输出:
<!---->Welcome to DrScheme, version 360.
Language: Standard (R5RS).
> (list 1 (list 2 (list 3 4)))
(1 (2 (3 4)))
树形状应当是这样
.
/\
/ \
1 .
/\
/ \
2 .
/\
/ \
3 4
习题2.25,
第一个list可以表示为(list 1 3 (list 5 7) 9)
因此取7的操作应当是:
<!---->(car (cdr (car (cdr (cdr (list 1 3 (list 5 7) 9))))))
第二个list表示为:(list (list 7))
因此取7操作为:
<!---->(car (car (list (list 7))))
第三个list可以表示为:
<!---->(list 1 (list 2 (list 3 (list 4 (list 5 (list 6 7))))))
因此取7的操作为:
<!---->(define x (list 1 (list 2 (list 3 (list 4 (list 5 (list 6 7)))))))
(car (cdr (car (cdr (car (cdr (car (cdr (car (cdr (car (cdr x))))))))))))
够恐怖!-_-
习题2.26,纯粹的动手题,就不说了
习题2.27,在reverse的基础上进行修改,同样采用迭代,比较难理解:
<!---->(define (deep-reverse x)
(define (reverse-iter rest result)
(cond ((null? rest) result)
((not (pair? (car rest)))
(reverse-iter (cdr rest)
(cons (car rest) result)))
(else
(reverse-iter (cdr rest)
(cons (deep-reverse (car rest)) result)))
))
(reverse-iter x ()))
习题2.28,递归,利用append过程就容易了:
<!---->(define (finge x)
(cond ((pair? x) (append (finge (car x)) (finge (cdr x))))
((null? x) ())
(else (list x))))
分享到:
相关推荐
针对提供的文件名,我们可以推测这些是该章节练习题的解答,可能包括了用Scheme语言编写的程序或代码片段。 1. **ex2.5.ss**: 这个文件可能包含了对第二章练习2.5的解答。在SICP中,练习2.5通常涉及到了过程定义、...
《计算机程序的构造和解释》...通过解答SICP的习题,读者将深入理解这些概念,并能运用到实际的编程实践中。习题旨在促进对这些基本原理的深入思考,帮助程序员建立坚实的基础,进而在面对复杂的编程挑战时能游刃有余。
《SICP习题解答,主要第一章的内容习题答案》 SICP,全称《Structure and Interpretation of Computer Programs》(计算机程序的构造和解释),是计算机科学领域的一本经典教材,由MIT(麻省理工学院)的 Harold ...
《SICP 2.2.4 节:图形语言》是计算机科学经典教材《结构与解释程序》(Structure and Interpretation of Computer Programs)中的一个重要章节,它深入介绍了如何利用编程来创建图形,以及如何设计和理解复杂的计算...
在" sicp-master "这个压缩包中,可能包含的是对SICP各章节练习题的解答,包括源代码、注释和分析。这些练习通常涵盖了函数式编程的基础,如高阶函数、递归、闭包,以及更高级的主题,如过程构造、数据结构、环境...
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download>>>https://github.com/wizardforcel/sicp-py-zh
SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版
《SICP解题集》是一份专注于探讨和解答《结构与解释程序》(Structure and Interpretation of Computer Programs,简称SICP)一书中习题的资源。SICP是计算机科学领域的一本经典教材,由Harold Abelson、Gerald Jay ...
在"sicp-solutions"中,你可以找到对SICP书中各个章节练习题的解答,这些解答将帮助读者理解并实践书中所讲解的编程概念和技术。 1. **基本编程构造**:Scheme提供了基础的编程构造,如定义函数(`define`)、求值...
《计算机程序的构造与解释》(Structure and Interpretation of Computer Programs,简称SICP)是一本备受推崇的经典计算机科学教材,由Harold Abelson和Gerald Jay Sussman撰写,并由MIT出版社出版。这本书以其深入...
SICP-Python版本
SICP 使用的scheme解释器 以前叫DrScheme
书中大量的练习题和示例代码鼓励读者动手实践,加深对概念的理解。此外,SICP还引入了许多先进的编程思想和技术,如函数式编程、递归、抽象数据类型等,这些都对现代软件开发产生了深远的影响。 #### 四、总结 ...
Python SICP epub版本,很适合学习抽象的思想,用Python版本比lisp更实用
《计算机程序构造和解释》(SICP,Structure and Interpretation of Computer Programs)是一本具有深远影响力的计算机...压缩包中的“SICP 北大课件”文件可能包含课件、讲义、习题解答等资料,是学习SICP的宝贵资源。
《SICP》全称是《Structure and Interpretation of Computer Programs》,中文译为《计算机程序的构造和解释》。这是一本经典的计算机科学教材,由Harvard大学的 Harold Abelson 和 Gerald Jay Sussman 教授撰写,...
本书名为《a_book_sicp_py》,是一本以Python语言为基础介绍设计模式和计算机科学基础的书籍。根据描述和部分内容,可以提炼出以下知识点: 1. 编程语言的重要性:在计算机科学的宽泛领域中,编程语言扮演着至关...
标题中的"PyPI 官网下载 | sicp-0.0.1b102.dev4.tar.gz"指的是从Python的官方包索引(Python Package Index,简称PyPI)上下载的一个名为"sicp"的软件包的版本号为0.0.1b102.dev4的压缩文件,其格式是tar.gz。...
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 download : https://github.com/wizardforcel/sicp-py-zh