【SICP练习】38 练习1.43
练习1.43
我不想一开始就将结果贴出啦,而是通过叙述自己的思考来完成这篇博客。上一题中我在纸上写下“传入2个过程并返回1个过程”,事实证明挺有效的,于是这次我也依旧这么做了。
repeated需要传入一个过程和一个数字,这个数字决定了这个过程的执行次数。repeated还要返回1个过程,而这个过程又要传入一个数字,这个数字又将通过前面传入的过程来运算。确实挺绕的。
一开始对于决定这个过程的执行次数这一部分,我想参照练习1.41,还define了一个过程。但不知道怎么把这个过程写入repeated中。于是我将这个过程按如下格式写入repeated中了,编译器报错说这种形式非法。
(define repeated
(define r
(lambda (x)
......
(lambda ......
而后我不再企图单独列出这个要让过程执行多次的部分,而是先暂时将问题简单化。即便是只能做一个唯一的普通的运算也好。
(define repeated
(lambda (f a)
(lambda (b)
(if (= a 2)
(f (f b))
(f b)))))
测试一下。
((repeated square 2) 5)
;Value: 625
接下来就该来个递归了是不是。
在这里我还试过一次在define的过程里又define了一个过程,再次报错。终于博主决定将他们分开写了。
(define repeated-iter
(lambda (f a)
(lambda (b)
(if (= a 1)
(f b)
((repeated-iter f (- a 1)) (fb))))))
(define repeated
(lambda (f a)
(lambda (b)
((repeated-iter f a) b))))
接下来我们来测试一下,这回事真正的测试了。
((repeated square 5) 5)
;Value: 23283064365386962890625
这里我只是挑了一个比较大的数来展示,其为(square(square (square (square (square 5)))))。
【SICP练习】38 练习1.43相关推荐
- 后端语言-Coffeescript
为什么选择Coffeecript Javacript是WEB世界的通用语言,但其各种缺点也让人头疼,包括设计缺陷,糟糕的语法,各种浏览器的不兼容解释......用作主力编程语言让人不太放心.所以,更多 ...
- 读后感与机翻《理解工具:面向任务的对象建模、学习和识别》
以下是研究朱松纯FPICU概念中P(physics)的第一篇论文记录: 目录 读后感: 作者干了什么事? 作者怎么做的? 效果怎么样? 局限性 摘要 1 介绍 2 面向任务的对象表示 2.1 三维空间 ...
- 2021年信号与系统处理期中考试与课堂交互分数
§01 期中成绩整理 2021年信号与系统期中考试采取了 考试宝进行课堂练习 方式进行.但是使用考试宝进行测试有以下两方面的问题: 考试宝只能接受姓名和手机号,无法接受学号作为标识符: 考试宝在考试过 ...
- php %3cphp用大括号表示,整理HTML5中支持的URL编码与字符编码_html5教程技巧
URL 编码URL 编码就是将 URLs 中不宜打印的字符或者具有特殊意义的字符转换为 Web 浏览器和服务器明白且普遍接受的表示法. 这些字符包括: ASCII 控制字符 - 不宜打印的字符通常用于 ...
- 区间内x的出现个数(主席树)
题目大概:求区间内x出现的次数 出题人yjy Description ZJK 给你一个长度为 n 的数列和 m 次询问,每次询问从第 l 个到第 r 个数中,数 x 出现 了多少次. Input 第一 ...
- java reduce.mdn_reduce高级用法
reduce作为ES5新增的常规数组方法之一,对比forEach .filter和map,在实际使用上好像有些被忽略,发现身边的人极少用它,导致这个如此强大的方法被逐渐埋没. 如果经常使用reduce ...
- Linux小工具(3)之/proc目录详细介绍(上)
目录 前言 一.平台说明 二./proc目录概述 三.准备使用 (1)进程描述文件夹 (2)/proc目录下常见的文件夹 前言 Linux系统的使用有别于Windows系统,无论是系统信息还是应用软件 ...
- linux的nvme驱动需要关心的统计项
blk-mq-sysfs.c生成了一些其他的nvme的统计项, 有多少个online的cpu,在驱动加载的时候会默认生成多少个队列,除非内存不足或者在保留内核中,则会减少. [root@localho ...
- 文件句柄?文件描述符?傻傻分不清楚
概述 在实际工作中会经常遇到一些bug,有些就需要用到文件句柄,文件描述符等概念,比如报错: too many open files, 如果你对相关知识一无所知,那么debug起来将会异常痛苦.在li ...
最新文章
- 存储虚拟化大幅减少了宕机时间
- JustifyTextView 解决TextView中英文混排自动换行的问题
- java post 提交数据_使用Post方式提交数据到Tomcat服务器的方法
- 数据库 - 事务管理(ACID)隔离级别 事务传播行为
- (原+转)ubuntu终端输出彩色文字
- jxls向右循环为什么会间隔单元格_VBA中单元格的Offset属性,你是否能灵活的利用呢?...
- Java中类方法的快速入门
- 丁磊:阿里网易员工很多是夫妻
- python自动导出数据脚本_使用python生成一个导出数据库的bat脚本文件的示例代码...
- 数学分析:函数序列及其一致收敛性
- 用Python绘制标准时钟
- python给图片加边框,照片加边框,照片加描边,图片加描边,批量给图片加描边
- python 倒计时手机app打卡_摆脱拖延症,这些APP让你的时间更高效!
- html中自动换行标记[转]
- java里什么是注释,全面解析Java中的注解与注释
- 20条职场潜规则!小心那些城府很深的人(建议收藏)
- 数据安全前言技术研究联邦学习
- flash制作swf播放器
- Java、JSP商场管理系统
- 【第9期】自动驾驶出租车到底“破坏力”几何?麦肯锡这份报告告诉你...