【发布时间】:2010-09-07 10:35:39
【问题描述】:
在编写生产质量的 VC++ 代码时,是否可以使用递归?为什么或为什么不?
【问题讨论】:
标签: visual-c++ recursion
在编写生产质量的 VC++ 代码时,是否可以使用递归?为什么或为什么不?
【问题讨论】:
标签: visual-c++ recursion
是的。但从不在死代码中。那太傻了。
【讨论】:
当然 - 例如如果您想遍历树结构,您还会使用什么?
也许您希望有一个最大深度之类的东西,以确保您没有编写无限循环。 (如果这在您的示例中有意义)
【讨论】:
有没有办法确定什么 点我会遇到一个堆栈 溢出?
取决于你走多远,以及实际递归有多大。我想你明白递归是做什么的吗?
【讨论】:
有没有办法确定我会在什么时候遇到堆栈溢出?
不是真的。当您耗尽堆栈空间时会发生堆栈溢出 - 但是...
我遇到的唯一一次是无限循环,或者使用前面提到的 200k 缓冲区。
我发现我的应用程序崩溃更可取,而不是它使用 100% CPU 永远循环并且必须被强制终止(这是远程服务器上的正确 PITA,因为 Windows 缺少 SSH,连接不良)
粗略的指导:您认为您的递归函数可能会连续调用自己超过 10,000 次吗?或者你在做一些愚蠢的事情,比如在堆栈上分配 200k 缓冲区?
如果是,请放心。
如果没有,请继续做更重要的事情。
【讨论】:
递归对于遍历文件夹/目录等文件结构几乎是必不可少的。
如果使用递归,遍历树状结构非常容易。
【讨论】: