文档章节

SICP 1.31 1.32 1.33

 代码强国
发布于 2014/08/23 14:09
字数 300
阅读 59
收藏 0

解:1.31

(define (add-1 x)
  (+ x 1))

(define (product term a next b)
  (if (> a b)
      1
      (* (term a) (product term (next a) next b))))

(define (product-iter term a next b)
  (define (iter x result)
    (if (> x b)
        result
        (iter (next x) (* result (term x)))))
  (iter a 1.0))

(define (factorial n)
  (product identity 1 add-1 n))

(define (pi n)
  (define (term x)
    (define t (* x 1.0))
    (cond ((even? t) (/ (+ t 2) (+ t 1)))
          (else (/ (+ t 1) (+ t 2)))))
  (* 4.0 (product-iter term 1 add-1 n)))


1.32

(define (accumulate combiner null-value term a next b)
  (if (> a b)
      null-value
      (combiner (term a)
                (accumulate combiner null-value term (next a) next b))))

(define (accumulate-iter combiner null-value term a next b)
  (define (iter x result)
    (if (> x b)
        result
        (iter (next x) (combiner (term x) result))))
  (iter a null-value))

(define (acc-sum term a next b)
  (accumulate-iter + 0 term a next b))

(define (acc-product term a next b)
  (accumulate-iter * 1 term a next b))


1.33

(define (filtered-accumulate filter combiner null-value term a next b)
  (define t (term a))
  (define lvar (if (filter t) t null-value))
  (if (> a b)
      null-value
      (combiner lvar
                (filtered-accumulate filter combiner null-value term (next a) next b))))

(define (square x)
  (* x x))
 
(define (smallest-divisor n)
  (define (divides? a b)
    (= (remainder b a) 0))
  (define (next divisor)
    (if (= divisor 2)
        3
        (+ divisor 2)))
  (define (find-divisor n test-divisor)
    (cond ((> (square test-divisor) n) n)
          ((divides? test-divisor n) test-divisor)
          (else (find-divisor n (next test-divisor)))))
  (find-divisor n 2))
 
(define (prime? n)
  (= n (smallest-divisor n)))

(define (sum-prime a b)
  (filtered-accumulate prime? + 0 identity a add-1 b))

(define (gcd a b)
  (if (= b 0)
      a
      (gcd b (remainder a b))))

(define (co-prime-product n)
  (define (co-prime? i)
    (= 1 (gcd i n)))
  (filtered-accumulate co-prime? * 1 identity 2 add-1 n))


© 著作权归作者所有

上一篇: SICP 1.37 1.38 1.39
下一篇: SICP 1.29 1.30
粉丝 1
博文 67
码字总数 21873
作品 0
深圳
私信 提问
iOS 11开发教程(七)编写第一个iOS11代码Hello,World

iOS 11开发教程(七)编写第一个iOS11代码Hello,World 代码就是用来实现某一特定的功能,而用计算机语言编写的命令序列的集合。现在就来通过代码在文本框中实现显示“Hello,World”字符串的功...

大学霸
2017/10/27
23
0
Xamarin.Forms教程下载安装Visual Studio 2015

Xamarin.Forms教程下载安装Visual Studio 2015 下载安装Visual Studio 2015 Visual Studio 2015是微软提供的IDE,其中集成了Windows下开发的各种工具。在编写Windows程序时,Visual Studio系...

大学霸
2016/03/04
411
0
iOS Sprite Kit教程之xcode安装以及苹果帐号绑定

iOS Sprite Kit教程之xcode安装以及苹果帐号绑定 其它的网站上下载安装Xcode 有时候,应用商店下载较慢,所以用户也可以选择从其他网站下载Xcode安装文件。下面讲解这种Xcode的安装步骤: (...

大学霸
2015/07/23
155
0
iOS 9应用开发教程之编辑界面与编写代码

iOS 9应用开发教程之编辑界面与编写代码 编辑界面 在1.2.2小节中提到过编辑界面(Interface builder),编辑界面是用来设计用户界面的,单击打开Main.storyboard文件就打开了编辑界面。在Xco...

大学霸
2015/08/07
1K
0
VMware-Powercli常用脚本

目 录 1.1 修改ESXI主机的root密码... 5 1.2 将本地文件传输到VM... 5 1.3 修改虚拟机硬件版本... 5 1.4 查看虚拟机快照... 6 1.5 更改虚拟机网卡... 6 1.6 批量开关虚拟机... 6 1.7 批量模板...

qq8658868
2017/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中ToBeAppliedRequestProcessor解析

ToBeAppliedRequestProcessor在Leader中 在已处理事务和最后处理事务处理器之间,处理器链上下一个是FinalRequestProcessor public void processRequest(Request request) throws RequestPro...

writeademo
30分钟前
3
0
Allegro快捷键设置-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
31分钟前
2
0
idea maven web项目启动build时报错java.lang.NullPointerException

之前还好好的,重启一下idea就报这个错了,大概率是tomcat没杀掉端口被占用了,在tomcat配置中更换一下sever端口就好了

宇辰OSC
35分钟前
3
0
weed3-2.3.1.查询之输出

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。 今天先...

刘之西东
35分钟前
3
0
【Android JetPack系列】数据绑定:DataBinding

参考MVVM

Agnes2017
43分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部