SICP 习题 (2.20)解题总结: 不确定数量参数
来源:互联网 发布:苹果官方同步软件 编辑:程序博客网 时间:2024/05/21 06:28
SICP 习题 2.20 引入了一种新的函数调用方式,就是带 . 符号的不确定参数调用方式。
题中也讲到了, Scheme支持这种调用方式,如果我们把方法定义成下面这个样子
(define (my-method first-p . others-p) ;…..)
我们就可以在调用方法my-method时传入大于2的任何数量的参数,比如:
(my-method 1 2 3 4 5 6)
这时my-method获得两个变量,first-p是1,而others-p是一个list,成员有2 3 4 5 6,就是说others-p等于(2 3 4 5 6)
题目要求我们实现一个叫same-parity的方法,该方法接受不确定数量的参数,返回和第一个参数具有同样奇偶性的所有参数。
这道题不难,题目的意思主要是介绍这种不确定数量参数的使用方式。
方法定义如下:
(define (same-parity first . others) (display first) (newline) (display others) (newline) (if (not (null? others)) (if (odd? first) (cons first (filter odd? others)) (cons first (remove odd? others))) (list first)))
这里有点偷懒,使用了系统的filter过程和remove过程, 系统的filter过程可以返回一个列表中满足条件的成员,而系统过程remove返回所有不满足条件的成员。
而odd?过程也是一个系统过程,用于判断一个数的奇偶性。
不过方法里面加了两行打印代码,用于打印first参数和others参数,这样在测试的时候可以更清楚地观察两个参数的值。
0 0
- SICP 习题 (2.20)解题总结: 不确定数量参数
- SICP 习题 (1.24) 解题总结
- SICP 习题 (1.26) 解题总结
- SICP 习题 (1.27) 解题总结
- SICP 习题 (1.28)解题总结
- SICP 习题 (1.29)解题总结
- SICP 习题 (1.30)解题总结
- SICP 习题 (1.31)解题总结
- SICP 习题 (1.32)解题总结
- SICP 习题 (1.33)解题总结
- SICP 习题 (1.34)解题总结
- SICP 习题 (1.35)解题总结
- SICP 习题 (1.36)解题总结
- SICP 习题 (1.37)解题总结
- SICP 习题 (1.38)解题总结
- SICP 习题 (1.39)解题总结
- SICP 习题 (1.40)解题总结
- SICP 习题 (1.41)解题总结
- [Shell]判断目录读写权限
- 数据结构-----链表的逆序
- 在自己强大之前,不要奢望别人主动帮助你
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端一)
- STL 笔记(四) 迭代器 iterator
- SICP 习题 (2.20)解题总结: 不确定数量参数
- Maven使用
- C语言实现简单线程池
- 图的单源最短路径Dijkstra算法
- Struts2源码学习笔记(一)
- 图的dfs与bfs(深搜广搜)c++实现
- jQuery_1_总体架构&自调用匿名函数
- SICP 习题 (2.21)解题总结: map的使用
- POJ3187 Backward Digit Sums