sicp习题2.2节尝试解答

习题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 )))
树形状应当是这样
       
习题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))))



123533.html

dennis 2007-06-12 09:55 发表评论
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值