在编写生产质量的VC ++代码时,递归的使用是否可以接受?为什么或为什么不呢?
答案 0 :(得分:6)
有没有办法确定我会在什么时候遇到堆栈溢出?
不是真的。当你耗尽堆栈空间时会发生堆栈溢出 - 但是......
我曾经遇到过的唯一一次是无限循环,或使用前面提到的200k缓冲区。
我发现我的应用程序更容易崩溃,而不是使用100%CPU永远循环并且必须被强行杀死(由于Windows缺少SSH,这是一个错误连接的远程服务器上的正确PITA )
一个粗略的指导原则:你认为你的递归函数可能会连续调用10,000次以上吗?或者你是否正在做一些愚蠢的事情,比如在堆栈上分配200k缓冲区?
如果是,请担心。
如果不是,继续进行更重要的事情。
答案 1 :(得分:2)
是。但从来没有死代码。那太傻了。
答案 2 :(得分:0)
当然 - 例如如果你想遍历一个树形结构你还会使用什么?
也许你希望有一个像最大深度的东西,以确保你没有写一个无限循环。 (如果这在你的例子中有意义的话)
答案 3 :(得分:0)
有没有办法确定什么 我会遇到一个堆栈 溢出?
取决于你的深度,以及实际递归的大小。我知道递归是什么意思吗?
答案 4 :(得分:0)
递归对于遍历文件夹/目录等文件结构几乎是必不可少的。
如果使用递归,遍历树状结构非常容易。