这一节比较容易
(define (square n) (* n n))
(define (list-ref items n)
(if (= n 0)
(car items)
(list-ref (cdr items) (- n 1))))
(define (length items)
(if (null? items)
0
(+ 1 (length (cdr items)))))
(define (append list1 list2)
(if (null? list1)
list2
(cons (car list1) (append (cdr list1) list2))))
;; 2.17
(define (last-pair items)
(if (null? (cdr items)) (car items)
(last-pair (cdr items))))
;(last-pair (list 23 72 149 34))
;; 2.18
(define (reverse items)
(define (reverse-iter items new-item counter)
(cond ((null? (cdr items)) (cons (car items) new-item))
((= 0 counter) (reverse-iter (cdr items) (cons (car items) nil) (+ counter 1)))
(else (reverse-iter (cdr items) (cons (car items) new-item) (+ counter 1)))))
(reverse-iter items nil 0))
;(reverse (list 1 4 9 16 25))
;; 2.19
(define (no-more? coin-values) (null? coin-values))
(define (except-first-denomination coin-values) (cdr coin-values))
(define (first-denomination coin-values) (car coin-values))
(define (cc amount coin-values)
(cond ((= amount 0) 1)
((or (< amount 0) (no-more? coin-values)) 0)
(else
(+ (cc amount
(except-first-denomination coin-values))
(cc (- amount
(first-denomination coin-values))
coin-values)))))
(define us-coins (list 50 25 10 5 1))
(define uk-coins (list 100 50 20 10 5 2 1 0.5))
;; (cc 100 us-coins)
;; 2.20
(define (same-parity . items)
(let ((parity (even? (car items))))
(define (same-parity-iter items)
(cond ((null? items) nil)
((equal? parity (even? (car items))) (cons (car items) (same-parity-iter (cdr items))))
(else (same-parity-iter (cdr items)))))
(same-parity-iter items)))
;(same-parity 1 2 3 4 5 6 7 8)
(define (map proc items)
(if (null? items)
nil
(cons (proc (car items)) (map proc (cdr items)))))
(define (scale-list items factor)
(map (lambda (x) (* x factor))
items))
;;2.21
;(define (square-list items)
; (if (null? items)
; nil
; (cons (square (car items)) (square-list (cdr items)))))
;(define (square-list items)
; (map (lambda (x) (* x x)) items))
;2.22
(define (square-list items)
(define (iter things answer)
(if (null? things)
answer
;(iter (cdr things)
; (cons (square (car things))
; answer))
(cons (square (car things)) (iter (cdr things) nil))
))
(iter items nil))
;(square-list (list 1 2 3 4))
;(define (for-each proc items)
; (cond ((not (null? items))
; (proc (car items))
; (for-each proc (cdr items)))))
(define (for-each proc items)
(if (not (null? items))
(let ()
(proc (car items))
(for-each proc (cdr items)))))
(for-each (lambda (x) (newline) (display x))
(list 57 321 88))
分享到:
相关推荐
SICP 习题答案 计算机程序的构造和解释 1-3章 习题答案
NULL 博文链接:https://pengpeng.iteye.com/blog/1344689
SICP习题解答,主要第一章的内容习题答案
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download>>>https://github.com/wizardforcel/sicp-py-zh
SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版
SICP-Python版本
SICP 使用的scheme解释器 以前叫DrScheme
sicp 2.2.4节图形语言的racket程序包,配置路径,C:\Users\Administrator\AppData\Roaming\Racket
Python SICP epub版本,很适合学习抽象的思想,用Python版本比lisp更实用
sicp 2ed高清pdf,以及相对应的mit课程资料及习题答案打包,中文版的视频在这里http://i.youku.com/i/UNTcxODk3ODQw/videos?spm=a2hzp.8244740.0.0
SICP 解题集
SICP CHINESE ENGLISH THE SECOND EDITION SICP CHINESE ENGLISH THE SECOND EDITION
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 download : https://github.com/wizardforcel/sicp-py-zh
SICP_章_1-3 我对SICP第二版第1-3章的解决方案: 书中练习来自示例分配/ psets 项目位于 最后,来自考试
资源来自pypi官网。 资源全名:sicp-0.0.1b102.dev4.tar.gz
sicp-in-python(中文版+英文版)PDF 背景. SICP 全称Structure and Interpretation of Computer Programs,翻译过来叫《计算机程序的构造和解释》使用python
SICP 解题集《计算机程序的构造和解释》练习题解集。安装 MIT/GNU Scheme(macOS)下载:下载后运行 .dmg 文件,把 MIT/GNU Scheme.app 拖入 Applications 文件夹在 Applications/应用程序 文件夹中找到 MIT/GNU ...
资源名称:sicp 和 操作系统:精髓与设计原理第七版资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
经典书籍《计算机程序的构造与解释》,UCB热门课程CS61a的官方教材