【发布时间】:2011-10-19 10:53:40
【问题描述】:
通常不需要无限递归,当它发生时通常会导致堆栈溢出或段错误。
但出于理论考虑,出于好奇,我一直在考虑是否可以有意地创建实际的无限递归。
在 C++ 和 C 中工作,其中堆栈通常会随着每个函数调用而增长,并且每个函数都会返回并弹出它处理的堆栈部分。
这就是想法。是否可以强制一个函数清除它自己的堆栈空间,然后调用另一个函数,以便新函数有效地替换第一个函数,而不需要第一个函数返回然后通过循环再次触发。
如果有的话,我不仅在考虑将普通循环作为可能的用途。循环通常在他们所做的事情上做得很好。但是,如果您要使用它通过节点网络发送信号,这些信号会在它们自己的进程线程中无限期地进行,直到达到特定条件。它可能是一个可以用来解决一些问题的工具。
请记住,我并不是真的在问它是否实用,只是在可能的情况下。为了科学!
【问题讨论】:
-
你的第四段没有描述递归。
-
我描述了一种可能的用途,我正在单独询问递归。你的说法有什么意义?
-
您可能想了解en.wikipedia.org/wiki/Continuation-passing_style(它的使用依赖于适当的尾调用优化)。
-
@Patrick87:我不确定我是否看到了您的示例,现在找不到了。你删除了吗?
-
@Zoomulator:是的,原来我犯了一个错误。对不起...请忽略。