1
24
相互递归在解析数学表达式(和其他语法)的代码中很常见。基于以下语法的递归下降解析器自然包含相互递归:
|
2
12
恰当的术语是相互递归。 http://en.wikipedia.org/wiki/Mutual_recursion 在那个页面上有一个例子,我将在Java中复制:
其中abs(n)表示返回一个数的绝对值。 显然,这并不是有效的,只是为了证明一点。 |
3
8
例如,在象棋等游戏程序中常用的minmax算法。从游戏树的顶部开始,目标是找到 最大限度 下面级别上所有节点的值,其值定义为 最低限度 其值定义为 最大限度 下面的值,其值… |
4
4
我可以想到两个共同的递归源。 处理相互递归类型的函数考虑一个抽象语法树(ast),它在每个节点中保存位置信息。类型可能如下所示:
编写操作这些类型值的函数的最简单方法是编写相互递归的函数。例如,用于查找自由变量集的函数:
状态机考虑一个状态机,它可以打开、关闭或暂停,并带有启动、停止、暂停和恢复指令(F代码):
状态机可以写成相互递归的函数,每个状态有一个函数:
|
5
3
它有点做作,效率也不是很高,但是您可以使用函数计算fibbonacci数,如下所示:
在这种情况下,如果语言支持 memoization |
6
3
在具有适当尾部调用的语言中,相互尾部递归是实现自动机的一种非常自然的方法。 |
7
2
这是我的密码解决方案。对于一个执行
|
jkfe · 为什么println会在这段递归代码中执行? 2 年前 |
Jimmy · 这种算法怎么能按顺序遍历树“爬上”树呢? 2 年前 |
AvirukBasak · gcc中无return语句的尾部递归 2 年前 |
Dharmik Patel · 使用python递归完全可以整除 2 年前 |
W.tan · 一维最短距离递归算法 2 年前 |
ncarrawa · 将1添加到i(递归)时出现类型错误 2 年前 |
Eren · Python递归何时返回[duplicate] 2 年前 |