SICP 习题 (2.30)解题总结 : Square-Tree
来源:互联网 发布:include c语言 编辑:程序博客网 时间:2024/06/14 04:28
SICP 习题 2.30 要求我们完成一个叫square-tree的过程,其作用和之前的square过程差不多,square过程是针对简单列表的,将列表中的所有元素求平方,然后返回新的平方数列表。不过square不能对嵌套列表进行处理,如果列表中还包含列表的话会报错。
题目要求我们实现一个square-tree的过程,当输入的列表包含另一个列表时可以对嵌套的列表进行处理,生成所有列表元素的平方数。
这个和之前几道题差不多,都是对树状列表的遍历和处理。题目还要求我们用两种方式实现,一种使用map,一种不使用map。
先看看不使用map的方法,就是不断取列表第一个元素,如果元素是个简单的数就求平方,如果元素是一个列表就递归调用square-tree。处理完第一个元素接着处理后面的cdr部分的内容。
代码如下:
(define (square-tree input-list) (if (null? input-list) '() (if (list? (car input-list)) (cons (square-tree (car input-list)) (square-tree (cdr input-list))) (cons (square (car input-list)) (square-tree (cdr input-list))))))
如果是使用map的话,就不用自己遍历了,直接使用map过程对所有元素进行处理,如果是数字就求平方,如果是列表就递归调用square-tree-map。
(define (square-tree-map input-list) (map (lambda (i) (if (list? i) (square-tree-map i) (square i))) input-list) )(define (square x) (* x x))
0 0
- SICP 习题 (2.30)解题总结 : Square-Tree
- SICP 习题 (2.31)解题总结 : 通用的Square-Tree
- SICP 习题 (1.21) 解题总结
- SICP习题 (1.12)解题总结
- SICP 习题 (1.14)解题总结
- SICP 习题 (1.13) 解题总结
- SICP 习题 (1.15) 解题总结
- SICP 习题 (1.16)解题总结
- SICP 习题 ( 1.17) 解题总结
- SICP 习题 (1.18) 解题总结
- SICP 习题 (1.19) 解题总结
- SICP 习题 (1.20) 解题总结
- SICP 习题 (1.22) 解题总结
- SICP 习题 (1.23) 解题总结
- SICP 习题 (1.25) 解题总结
- SICP 练习2.30 square-tree
- SICP 习题 (1.24) 解题总结
- SICP 习题 (1.26) 解题总结
- sm30 + change document
- VC2010无法加载资源视图
- js作用域链中变量提前的问题
- 对伪目标的理解
- 为什么要选择ERLANG?
- SICP 习题 (2.30)解题总结 : Square-Tree
- eclpse的导入方式
- LCD各接口类型与定义
- 第十七周项目四日期结构体
- serialVersionUID作用
- hdoj 3788 zoj问题
- 前端学习打卡--day3
- 基于角色的权限管理(转载)
- editplus如何直接编译运行命令提示符