SICP练习1.17
对题目进行分析,
反复地做加法,能达到乘积的效果,
值得注意的是在书上写了如下代码
(define (* a b)
(if (= b 0)
0
(+ a (* a (- b 1)))))
第一眼看的时候可能会糊涂,
可是题干上已经说明,
“in which it is assumed that our language can
only add,not multiply”
所以,我们不要把*看成乘号,
只需将他看成一过程名即可,
在这个过程中只要形参b不为0,
就会递归出如下过程:
(+ a (+ a (+ a (…(+ a (- b 1))…))))
这是一个线性递归的过程,
其时间增长的阶和空间增长的阶均为b,
现在要设计一个类似fast-expt的过程,
也就是其增长的阶为对数,
书中提示有两个过程,
分别为能求出一个整数两倍的名为double的过程,
和一个能求出偶数除以2的名为halve的过程,
现在我们要利用题目上给出的条件,
设计出一个类似fast-expt的算法过程,
2021年3月21日19:45
(define fast-mult(lambda (a b)(define even?(lambda (x)(= (remainder x 2) 0)))(define double(lambda (x)(+ x x)))(define halve(lambda (x)(/ x 2)))(cond ((or (= a 0)(= b 0))0)(else (if (even? b)(double (fast-mult a(halve b)))(+ a (fast-mult a(- b 1))))))))
SICP练习1.17相关推荐
- [books] - SICP 2nd edition
全名是: Structure and Interpretation of Computer Programs 中文名稱: 计算机程序的构造和解释 20131024 淘寶訂單 20131104 到手, ...
- 学习伯克利CS 61A课程(Structure and Interpretation of Computer Programs, SICP)的相关资源
有个叫做Teach Yourself Computer Science的网站[1]教如何自学计算机科学,关于Programming这个方向推荐了<Structure and Interpreta ...
- 计算机程序结构和解释,SICP 计算机程序的构造和解释
<SICP 计算机程序的构造和解释>由会员分享,可在线阅读,更多相关<SICP 计算机程序的构造和解释(5页珍藏版)>请在人人文库网上搜索. 1.SICP 计算机程序的构造和解 ...
- 《SICP》习题第3章(施工中)
本人做的SICP习题第3章,如有错误请指正,用的解释器是Racket 练习3.1 ;; 累加器 (define (make-accumulator initial)(lambda (x)(let (( ...
- 【CV】吴恩达机器学习课程笔记第17章
本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片 机器学习 | Coursera 吴恩达机器学习系列课程_bilibili 目录 17 大规模机器学习 17-1 学习大数据集 17-2 随 ...
- 零起点学算法17——比较2个数大小
零起点学算法17--比较2个数大小 Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lld Description 输入2个整数, ...
- 北语计算机应用基础2,北语17春《计算机应用基础》练习2
北语17春<计算机应用基础>练习2 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 2017秋北语17春<计算机应 ...
- 机器学习入门(17)— 输入 4 维数据、基于 im2col 展开来实现卷积层
1. 输入 4 维数据 CNN 中各层间传递的数据是 4 维数据.所谓 4 维数据,比如数据的形状是(10, 1, 28, 28),则它对应 10 个高为 28.长为 28.通道为 1 的数据.用 P ...
- C语言程序设计 细节总结(第1-7章)
C语言细节总结 温故而知新,许久没看C语言,发现了一些从前没注意的小细节,总结下来~ 第1章C语言及C程序概述 1.C语言有34种运算符.32个关键字.9种控制语句 第2章数据类型.运算符与表达式 2 ...
- qt 显示加速_新能源 | 吉利星越ePro上市 补贴后17.58万起售 加速更快油耗更低
点击上方"蓝字"关注我们 新车速递 | 车市速报 吉利星越ePro上市 补贴后17.58万起 加速更快油耗更低 编辑 | 马 妍 排版 | 马 妍 「本文阅读时长约为3分钟 ...
最新文章
- vue2+webpack2实现饿了么移动端商家页面
- android 线程方式打印log到sd卡
- 任正非最新内部信:过去只为赚点小钱,现在要用5G+AI战胜美国
- oracle开放查询表权限_oracle 查询当前用户的表和其他用户的表
- 导出真实表格显示列数不能超过256_平均月薪真有6万5?说说我所知道的金融人真实薪酬...
- C++简单排序,堆排序
- php和mysql web开发 笔记_PHP和MySQL Web开发读书笔记---创建Web数据库
- winform 程序制作自己的数字签名(续)
- a+=b不一定等于a=a+b
- 2016蓝桥杯省赛---java---C---10(密码脱落)
- 任正非:要提高待遇,敢于和美国争夺人才
- swoole中退出、异常与错误的处理笔记
- python筛选csv数据_pandas数据筛选和csv操作的实现方法
- drools 7.x 事件元数据
- python socket epoll
- 分布式文件系统FastDFS看这一篇就够了(文件上传下载、单机部署及集群部署)
- java中HashSet实现(转)
- aka名字_想给Aka征集一个中文名字
- python做题记录之切西瓜
- 怎么用u盘重装系统?石大师u盘重装win10系统步骤