while(true)或递归函数?

时间:2017-03-03 02:01:53

标签: recursion while-loop

我一直想知道一段时间(没有双关语)现在更有效率。

此:

while(true)
{
     //do stuff
    if(stuffDone)
        break;
}

或者这个:

void something()
{
    //do stuff
    if(!stuffDone)
        something();
}

我还没有找到关于这个话题的任何内容,所以感谢任何意见!

2 个答案:

答案 0 :(得分:2)

递归会导致“堆栈溢出”。递归还需要更多的CPU来完成单个循环。这两种方法都是CPU密集型的,但是在两者之间进行选择,使用while循环来避免堆栈溢出崩溃。

通常这种“等待任务完成”处理异步主题。 信号 Mutex 或某些回调机制提供了一种更高效的CPU等待变量更改状态的方法。

答案 1 :(得分:0)

效率取决于很多因素。你不能说一个绝对比另一个好。不同的编程语言不会给出相同的结果。性能差异无关紧要。您应该更多地关注代码的可读性,并决定要使用哪些代码。递归函数通常比while循环的代码行少。

话虽如此,我想告诉你 while循环通常更快

以下是关于此主题的一些有趣答案: https://softwareengineering.stackexchange.com/questions/182314/recursion-or-while-loops