![]() |
1
4
正如Gideon所指出的,这不是尾部递归,因为“状态”列表中还有其他元素要处理。使这个尾部递归并不简单,因为您需要一些 队列 应处理的元素。
下面的伪代码显示了一种可能的解决方案。我补充说
|
![]() |
2
3
我找不到序列表达式中调用位于f尾部位置的定义,因此强烈建议不要编写依赖于当前实现语义的代码,即这是未定义的行为。
例如,尝试枚举(例如应用
但是,正如托马斯指出的那样,以下事实确实有效:
我的建议是总是用
FWIW,甚至 the F# language reference 弄错了。它提供了以下用于展平树的代码:
他们自己的代码杀死了F Interactive,当向左边的一棵深树进纸时,堆栈溢出。 |
![]() |
3
1
这不会是尾部递归,因为您可以多次递归调用。要转换为伪代码:
|
![]() |
Luiz Miranda · 尾递归pow-Erlang 7 年前 |
![]() |
Srinivas · Scala中的尾部递归 7 年前 |
![]() |
madtyn · Python:有可能使这个尾部递归阶乘更快吗? 7 年前 |
![]() |
clay · Scala中的尾部递归findNextAndTail 7 年前 |
![]() |
Sanitiy · 如何在调用另一个函数后强制函数退出? 7 年前 |
![]() |
Lorinc Nyitrai · Lua-将协程递归重写为尾部调用递归 8 年前 |
![]() |
Alex · 尾部递归调用(C primer加上书本示例) 9 年前 |
![]() |
Thomas Ahle · 递归联合查找是否可以优化? 9 年前 |
![]() |
beta Rob · 这个函数真的是尾部递归的吗? 12 年前 |