There is a recursive function f(). It is looking at cond and then either returning or executing f() then g(). Consider cond to be an external variable that can be set somewhere else, perhaps in a different thread.
If the first five times
condis checked,cond == true, but the sixth time,cond == false, descri开发者_C百科be the code flow.Because this is recursive, the code could suffer from a stack overflow if
cond == truefor too long. Fill in the functioniterative_f()so that the code flow is identical to the code flow in (1).//recursive void f() { if(cond == false) return; f(); g(); } //iterative void iterative_f() { }
Since the cond is false the 6th time, the function will in effect execute 5 times. The result is that function g will be executed 5 times.
Now you can write the iterative function as follows:
void iterative_f()
{
while(cond)
{
g();
}
}
加载中,请稍侯......
精彩评论