博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SICP 1.31 1.32 1.33
阅读量:6343 次
发布时间:2019-06-22

本文共 2062 字,大约阅读时间需要 6 分钟。

  hot3.png

解: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))

转载于:https://my.oschina.net/guzhou/blog/305852

你可能感兴趣的文章
手机安装 apk 出现“解析包时出现问题”
查看>>
在Android上面如何使用带有心跳检测的Socket
查看>>
Oracle用户被锁定解决方法
查看>>
485总线的概念
查看>>
我的友情链接
查看>>
web前端笔记
查看>>
import 路径
查看>>
使用optimizely做A/B测试
查看>>
finally知识讲解
查看>>
Matplotlib绘图与可视化
查看>>
openstack ocata版(脚本)控制节点安装
查看>>
【微信公众号开发】获取并保存access_token、jsapi_ticket票据(可用于微信分享、语音识别等等)...
查看>>
在开发中处理海量数据的方法 思路
查看>>
datatable 获取最大值
查看>>
sqlserver2012一直显示正在还原(Restoring)和从单用户转换成多用户模式(单用户连接中)...
查看>>
spark复习总结02
查看>>
李瑞红201771010111《第九周学习总结》
查看>>
[译]ZOOKEEPER RECIPES-Barriers
查看>>
navicat下载安装和激活一分钟完成
查看>>
6_5 一些有用网址
查看>>