SICP 1.29-1.33

1.29

 1 (define (sum term a next b)
 2   (if (> a b)
 3       0
 4       (+ (term a)
 5          (sum term (next a) next b))))
 6
 7 (define (cube x)
 8   (* x x x))
 9
10
11
12 (define (integral f a b n)
13   (define (helper f a b n k)
14     (define (next k)
15       (+ a (* k (/ (- b a) n))))
16     (cond ((= k n) (f (next k)))
17           ((= k 0) (+ (f (next k))
18                       (helper f a b n 1)))
19           ((= (remainder k 2) 0) (+ (* 2 (f (next k)))
20                                     (helper f a b n (+ k 1))))
21           (else (+ (* 4 (f (next k)))
22                    (helper f a b n (+ k 1))))))
23   (/ (* (helper f a b n 0) (/ (- b a) n)) 3))
24
25
26
27 ----- 出现 xxxx is not applicable 的错误, 有可能是由于把函数写成了中缀表达式的情况.

1.30

1 (define (sum term a next b)
2   (define (iter a result)
3     (if (= a b)
4         result
5         (iter (next a) (+ result
6                           (term a)))))
7   (iter a 0))

1.31

---> 没必要写,和前面差不多

1.32

1 (define (accumulate combiner null-value term a next b)
2   (if (> a b)
3       null-value
4       (combiner (term a)
5                 (accumulate combiner null-value term (next a) next b))))

1.33

----> 类似 不写了就...

时间: 2024-11-05 14:42:09

SICP 1.29-1.33的相关文章

SICP 1.29 1.30

解:代码如下 (define (sum term a next b)   (if (> a b)       0       (+ (term a) (sum term (next a) next b)))) (define (add-1 x)   (+ x 1)) (define (sum-iter term a next b)   (define (iter a result)     (if (> a b)         result         (iter (next a) (+

hihoCoder 1148 2月29日

时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 只有闰年有2月29日,满足以下一个条件的年份为闰年: 1. 年份能被4整除但不能被100整除 2. 年份能被400整除 输入 第一行为一个整数T,表示数据组数. 之后每组数据包含两行.每一行格式为"month day, year",表示一个日期.month为{"January", "February",

python双色球号码最大连开统计

q1:双色球红球33个里面任意选1个共33个,看哪个号最近连开的最久统计出来 双色球往期记录ssq.txt ===================== 2017093 7 7 9 15 22 27 122017092 7 7 19 29 32 33 92017091 5 5 10 23 28 29 32017090 1 7 10 16 22 33 92017089 11 12 13 16 23 25 122017088 5 5 18 22 23 29 62017087 7 7 13 14 19

第3次作业+105032014019

1.修正流程图:根据新修改的代码,再次修正流程图 2.测试用例设计:依据所有的覆盖理论,分别写出相应的测试用例设计.     覆盖方法 用例号     输入a,b,c     期待结果   实际结果 通过    时间 语句覆盖 1 3,3,3 等边三角形 等边三角形  通过 2017.3.30 语句覆盖 2 33,34,35 一般三角形 一般三角形  通过 2017.3.30  判定覆盖 3 1,1,'ert' 输入数据非法. 输入数据非法.  通过 2017.3.30 判定覆盖 4 3021,

日志分析ELK平台部署

工作原理如下如所示: 部署流程: 1.安装logstash的JDK环境: # tar zvxf jdk-8u73-linux-x64.tar.gz # mv jdk-8u73-linux-x64 /usr/local/java # vim /etc/profile export JAVA_HOME=/usr/local/java CLASSPATH=/usr/local/java/lib/dt.jar/usr/local/java/lib/tools.jar PATH=/usr/local/ja

智能NDS服务器的搭建——三大运营商线路分流解析DNS

在我们中国电信运营商不止一家,有电信.移动.网通,但我们在访问互联网资源时,有时候就会现跨网访问的情况,但有时间跨网访问速度是奇慢的.所以我们的网站运营商,也会在网站的服务器上同时配上三大电信运营商的线路,如此一来,电信用户访问的时候就走电信的出口,移动用户访问的时候就走移动的出口,网通通用户访问的就走网通的出口,这样也就很好的解决了跨网访问速度奇慢的问题的了.但这里其实就用到了,如何让DNS在解析地址的过程中智能的去判断哪个运营商的用户走哪条线路了.今天在这里给大家模拟实现一下,智能DNS如何

数据库编程4 Oracle Pro*C/C++开发

[本文谢绝转载原文来自http://990487026.blog.51cto.com] 1,上次难点复习 1 求所有部门的平均奖金 2 求各部门的平均薪水 3 求各部门每个工种的平均薪水 4 求各部门每个工种大于2000的平均薪水 5 求10号部门的平均工资(2种写法) 6 创建一个学生表 7 并向表中插入一条数据 8 列出不是管理层的员工: 9 工资最高前10名的员工信息(rownum是一个属性值) 10 找到各部门大于本部门平均薪水的员工: 11 创建索引 Linux 环境 Oracle  

MySQL-MMM高可用配置过程

MMM配置官方文档: http://mysql-mmm.org/mmm2:guide 本文环境:    主库:CentOS6.7 x64 192.168.0.201 mysql-5.6.29     主库:CentOS6.7 x64 192.168.0.202 mysql-5.6.29     备库:CentOS6.7 x64 192.168.0.203 mysql-5.6.29     备库:CentOS6.7 x64 192.168.0.204 mysql-5.6.29     管理:Cen

Scala 具体的并行集合库【翻译】

原文地址 本文内容 并行数组(Parallel Array) 并行向量(Parallel Vector) 并行范围(Parallel Range) 并行哈希表(Parallel Hash Tables) 并行散列 Tries(Parallel Hash Tries) 并行并发 Tries(Parallel Concurrent Tries) 参考资料 并行数组(Parallel Array) 一个 ParArray 序列包含线性.连续的元素数组.这意味着,通过修改底层数组,可以高效地访问和修改元

H - Ones

Description Given any integer 0 <= n <= 10000 not divisible by 2 or 5, some multiple of n is a number which in decimal notation is a sequence of 1's. How many digits are in the smallest such a multiple of n? Input Each line contains a number n. Outp