有一个递归函数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/