|
|
1
2
在没有毛茸茸的控制结构的情况下实现这一点的方法是制定议程。
但在你这么做之前,
定义抽象概念
.每次我看代码时,它称之为“树”,并充满了显式的
下面是树结构的一些抽象。这些特别重要,因为树的结构非常不规则:我想在任何节点上说‘给我这个节点的子节点’:叶子只是没有子节点的节点,不是什么特殊的东西。
现在是议程的一些摘要。议程是以列表的形式表示的,但其他人当然不知道这一点,一个更具工业实力的实现可能不想这样表示它们。
现在很容易编写函数的纯迭代版本(议程是维护堆栈),而不需要各种复杂的控制结构。
需要考虑的一件事是:如果更换
|
|
|
2
1
我已经修复了我的实现。如果你知道如何改进,或者知道如何实施
使用连续传球方式:
用法:
|
|
3
1
一种方法是递归遍历树,使用一个计数器跟踪当前访问的节点数。以前每次
鸡肉计划方言;我没有安装球拍。任何需要的转换都留给读者作为练习。
(看起来像是更换了
|
|
4
1
好吧,让我看看。。。这种深度优先枚举的一般结构是使用显式维护的堆栈(或者对于宽度优先顺序,使用队列):
这会产生类似的效果,但并不是你想要的:
根据您的示例,您希望跳过应用程序中的第一个元素:
所以现在,正如你所想,
|
|
|
David J. · 这个基本的scheme函数有什么问题 4 年前 |
|
|
Asher · 如何使用DrRacket遵循简单方案手册 8 年前 |
|
|
Flux · 如何从MIT方案访问环境变量? 8 年前 |
|
|
Adam Morad · 方案反转值 8 年前 |
|
|
Adam Morad · 方案更改树值 8 年前 |
|
|
lightning_missile · 词法范围和共享对象 8 年前 |