文档章节

SICP 2.27 2.28 2.29

 代码强国
发布于 2016/08/06 15:28
字数 160
阅读 3
收藏 0

2.27

(define (deep-reverse lst)
  (define (x-reverse l r)
    (cond ((null? l) r)
          ((pair? (car l)) (x-reverse (cdr l) (cons (x-reverse (car l) '()) r)))
          (else (x-reverse (cdr l) (cons (car l) r)))))
  (x-reverse lst '()))

2.28

(define (my-fringe lst)
  (define (x-fringe l res)
    (cond ((pair? l) (x-fringe (car l) (x-fringe (cdr l) res)))
          ((null? l) res)
          (else (cons l res))))
  (x-fringe (car lst) (x-fringe (cdr lst) '())))

2.29

(define (left-branch x) (car x))
(define (right-branch x) (car (cdr x)))
(define (branch-length x) (car x))
(define (branch-structure x) (car (cdr x)))

(define (is-branch? x) (number? (branch-length x)))
(define (total-weight x)
  (if (is-branch? x)
      (branch-structure x)
      (+ (total-weight (left-branch x))
         (total-weight (right-branch x)))))

(define (get-moment x)
  (* (branch-length x) (branch-structure x)))
(define moment-add +)
(define (total-moment x)
  (if (is-branch? x)
      (get-moment x)
      (moment-add (total-moment (left-branch x))
                  (total-moment (right-branch x)))))
(define (mobile-equilibrium? x)
  (if (is-branch? x)
      #t
      (let ((left (left-branch x))
            (right (right-branch x)))
        (if (= (total-moment left) (total-moment right))
            (and (mobile-equilibrium? left)
                 (mobile-equilibrium? right))
            #f))))

 

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 47
码字总数 9603
作品 0
深圳
SeaMonkey 2.29 Beta 1 发布,Mozilla 浏览器套件

SeaMonkey 2.29 Beta 1 发布,此版本现已提供免费下载。上一版本 SeaMonkey 2.26.1 之后因为构建架构的技术问题而跳过了 2.27 和 2.28 版本,下一个稳定版本将会是 2.29。 SeaMonkey原来是M...

oschina
2014/08/28
692
6
Calendar.MONTH 2月29号加一个月 问题

Calendar.MONTH 2月29号加一个月 问题 Calendar.MONTH 1月31号加一个月,如果是平年得到2.28,闰年2.29 但是如果平年2.28或者闰年2.29 加一个月却是3.28而不是3.31 怎么办? 还有4.30加一个月...

msgyg
昨天
0
0
iOS 9音频应用播放音频之控制播放速度

iOS 9音频应用播放音频之控制播放速度 iOS 9音频控制播放速度 iOS9音频文件在播放时是以一定的速度进行的。这个速度是可以进行更改的,从而实现iOS9音频文件的快速播放和慢速播放功能。要实现...

大学霸
2015/12/30
417
0
Xamarin iOS教程之显示和编辑文本

Xamarin iOS教程之显示和编辑文本 Xamarin iOS显示和编辑文本 在一个应用程序中,文字是非常重要的。它就是这些不会说话的设备的嘴巴。通过这些文字,可以很清楚的指定这些应用程序要表达的信...

大学霸
2015/06/17
0
0
大数据之 Linux:CentOS的安装

先分享一个学习平台,里面有大量的学习资料 欢迎订阅微信公众号:CoXie带你学编程 centos6.8 链接:https://pan.baidu.com/s/1TjCYXzijMzfpiZ9Z-D1Qhg 密码:7mvn 2.1 新建虚拟机 2.2 选中稍...

柯西带你学编程
05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之声明合并(二)

转发 TypeScript基础入门之声明合并(二) 声明合并 合并命名空间 与接口类似,同名的命名空间也将合并其成员。 由于名称空间同时创建了名称空间和值,因此我们需要了解它们是如何合并的。 要合...

durban
20分钟前
0
0
centos7系统安装sersync+rsync实现服务器同步功能

centos7系统安装sersync+rsync实现服务器同步功能 MQ_douer0人评论21708人阅读2017-04-08 15:49:03 一、为什么要用sersync+rsync架构? 1、sersync是基于inotify开发的,类似于inotify-tools...

linjin200
20分钟前
1
0
Windows下安装phpRedis扩展

Windows下安装phpRedis扩展 通常在做PHP程序测试时,会用到Redis。而一般测试都是在Windows下进行的,所以需要在Windows环境下安装phpRedis扩展,用以支持php对Redis的访问。 工具/原料 php调...

梦梦阁
25分钟前
1
0
HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法

HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法 在做双十一压测时,高并发调用requests时报错.问题解决方法 问题原因 是因为在每次数据传输前客户端要和服务器建立TCP...

_Change_
30分钟前
0
0
iosdfgh

复制 IO流 (***** 了解 *****) 1.1 概述 之前我们学习了 File 类,这个类中有很多操作文件本身的方法, File类它只能操作文件或文件夹,并不能去访问文件中的数据。真正保存数据的是文件,数据...

码农屌丝
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部