我一直想知道一段时间(没有双关语)现在更有效率。
此:
while(true)
{
//do stuff
if(stuffDone)
break;
}
或者这个:
void something()
{
//do stuff
if(!stuffDone)
something();
}
我还没有找到关于这个话题的任何内容,所以感谢任何意见!
答案 0 :(得分:2)
递归会导致“堆栈溢出”。递归还需要更多的CPU来完成单个循环。这两种方法都是CPU密集型的,但是在两者之间进行选择,使用while循环来避免堆栈溢出崩溃。
通常这种“等待任务完成”处理异步主题。 信号, Mutex 或某些回调机制提供了一种更高效的CPU等待变量更改状态的方法。
答案 1 :(得分:0)
效率取决于很多因素。你不能说一个绝对比另一个好。不同的编程语言不会给出相同的结果。性能差异无关紧要。您应该更多地关注代码的可读性,并决定要使用哪些代码。递归函数通常比while循环的代码行少。
话虽如此,我想告诉你 while循环通常更快。
以下是关于此主题的一些有趣答案: https://softwareengineering.stackexchange.com/questions/182314/recursion-or-while-loops