文档章节

【SICP练习】38 练习1.43

NoMasp
 NoMasp
发布于 2015/09/08 21:47
字数 488
阅读 8
收藏 0


练习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)))))

版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.csdn.net/nomasp

本文转载自:http://blog.csdn.net/nomasp/article/details/43867423

NoMasp
粉丝 7
博文 334
码字总数 0
作品 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
GIS和RS的期刊影响因子列表

GIS and Remote Sensing Journal List with Impact Factors The following list provides impact factors for relevant GIS and Remote Sensing scientific journals. 2013 Impact Factor , ......

geowangsh
2016/02/03
324
0
dd_rescue 1.43 发布,磁盘数据恢复工具

dd_rescue 1.43 发布,此版本更新内容如下: The focus of 1.43 is a well-working lzo plugin (libddr_lzo.so, short: ddr_lzo). ddr_lzo allows the user to de/compress data during dd_......

oschina
2014/05/22
1K
3
iOS 11开发教程(十)iOS11无线连接手机真机测试

iOS 11开发教程(十)iOS11无线连接手机真机测试 在Xcode 9.0中,已经可以通过无线连接手机进行真机测试了。具体的操作步骤如下: (1)首先需要使用数据线将手机连接到苹果电脑上。 (2)打...

大学霸
2017/10/30
11
0
缓冲区溢出——练习题3.43B解答

题目 《深入理解计算机系统(原书第2版)》第3章 程序的机器级表示 (a) C code (b) Disassembly up through call to gets Figure 3.32 C and disassembled code for Problem 3.43. 练习器3.4...

小小浪把_Dont_know拍
2018/01/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Blockstack-2 :Blockstack ID注册

本篇文章主要记录Blockstack ID注册的流程; 在介绍注册流程之前,先简单的介绍一下Blockstack ID; 相对于传统互联网来说,Blockstack ID更像是统一的账号系统;即一个账号即可登录和授权所...

Riverzhou
45分钟前
11
0
面试官问:平时碰到系统CPU飙高和频繁GC,你会怎么排查?

处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运...

Java高级架构师n
今天
24
0
面向对象编程

1、类和对象 类是对象的蓝图和模板,而对象是实例;即对象是具体的实例,类是一个抽象的模板 当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽取出来后,就可以定...

huijue
今天
25
0
redis异常解决 :idea启动本地redis出现 jedis.exceptions.JedisDataException: NOAUTH Authentication required

第一次安装在本地redis服务,试试跑项目,结果却出现nested exception is redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required错误,真是让人头疼 先检查一...

青慕
今天
35
0
Spring 之 IoC 源码分析 (基于注解方式)

一、 IoC 理论 IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。 二、IoC方式 Spring为IoC提供了2种方式,一种是基于xml...

星爵22
今天
36
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部