82、编写一个表达式,其值是一个表格,该表格将 0 到 999 的每个整数与其平方关联起来。
在 Scheme 中可以使用以下代码实现:
(map (lambda (x) (cons x (* x x))) (iota 1000))
这里:
-
iota 1000生成从 0 到 999 的整数列表; -
lambda (x) (cons x (* x x))是一个匿名函数,它将每个整数x与其平方(* x x)组合成一个序对; -
map函数将该匿名函数应用到整数列表的每个元素上。
83、定义一个名为 buffer-size 的过程,用于计算缓冲区中项目的数量(将重复项视为不同项)。不要依赖特定的缓冲区模型结构!
(define buffer-size
(tally empty-buffer?
(pipe take-from-buffer >next)))
84、证明 (lambda (left right) (>= (sum left) (sum right))) 是所有数字列表构成的域上的一个序关系。这个序关系诱导出的等价关系是什么?
要证明 (lambda (left right) (>= (sum left) (sum right))) 是序关系,需验证其 连通性 和 传递性 。
连通性
对于任意两个数字列表 left 和 right ,要么 (sum left) >= (sum right) ,要么 (sum right) >= (sum left) ,满足连通性。
传递性
设存在三个数字列表 left 、 mid 和 right ,若 (sum left) >= (sum mid) 且 (sum mid) >= (sum right) ,则必然有 (sum left) >= (sum right) ,满足传递性。
因此,它是序关系。
诱导出的等价关系
该序关系诱导出的等价关系是:两个数字列表 left 和 right ,当 (sum left) = (sum right) 时,它们在这个序关系下等价。
85、证明:对于定义在域 D 上的任何排序关系 R,关系 R 也是一种排序关系。其中,对于 D 中的任意元素 a 和 b,当且仅当 b 与 a 具有关系 R 或者 a 与 b 不具有关系 R 时,a 与 b 具有关系 R 。
要证明 R 是排序关系,需证明其满足 连通性 和 传递性 *。
- 连通性 :
设 a 和 b 是域 D 中的任意元素。
因为 R 是连通的,所以要么 a 与 b 具有关系 R,要么 b 与 a 具有关系 R。
- 若 b 与 a 具有关系 R,根据 R 的定义,a 与 b 具有关系 R 。
- 若 a 与 b 不具有关系 R,同样根据定义,a 与 b 具有关系 R*。
所以对于任意 a 和 b,要么 a 与 b 具有关系 R ,要么 b 与 a 具有关系 R ,即 R* 是连通的。
- 传递性 :
设 a、b、c 是域 D 中的元素,且 a 与 b 具有关系 R ,b 与 c 具有关系 R 。
分情况讨论:
-
若 a 与 b 具有关系 R 是因为 b 与 a 具有关系 R,b 与 c 具有关系 R 是因为 c 与 b 具有关系 R。
由于 R 是传递的,所以 c 与 a 具有关系 R,根据 R 的定义,a 与 c 具有关系 R 。 -
若 a 与 b 具有关系 R 是因为 a 与 b 不具有关系 R,b 与 c 具有关系 R 是因为 c 与 b 具有关系 R。
因为 R 是传递的,若 a 与 c 具有关系 R,又 c 与 b 具有关系 R,那么 a 与 b 应具有关系 R,这与 a 与 b 不具有关系 R 矛盾,
所以 a 与 c 不具有关系 R,根据 R 的定义,a 与 c 具有关系 R 。 -
其他情况同理可证。
所以 R* 是传递的。
综上,R 满足 连通性 和 传递性 ,因此 R 是排序关系。
86、通过数学归纳法证明,对于任意自然数n,高度为n的树的最大节点数为2ⁿ - 1。
-
基础情况 :当n = 0时,树的高度

最低0.47元/天 解锁文章

87

被折叠的 条评论
为什么被折叠?



