有一个递归函数f()。它查看cond然后返回或执行f()然后g()。将cond视为可以在其他地方设置的外部变量,可能在不同的线程中。
如果前五次cond被选中,cond == true,而第六次cond == false,则描述代码流。
因为这是递归的,如果cond == true太长时间,代码可能会遭受堆栈溢出。填写函数iterative_f(),使代码流与(1)中的代码流相同。

//recursive

void f()
{
    if(cond == false)
        return;
    f();
    g();
}

//iterative
void iterative_f() {

}

最佳答案

由于第6次cond为false,该函数实际上将执行5次。结果是函数g将被执行5次。
现在您可以编写迭代函数,如下所示:
无效迭代
{
当(秒)
{
g();
}
}

关于c - 将递归函数更改为迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5590200/

10-12 06:47