Reputation: 1278
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 cond
is checked, cond == true
, but the sixth time, cond == false
, describe the code flow.
Because this is recursive, the code could suffer from a stack overflow if cond == true
for too long. Fill in the function iterative_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() {
}
Upvotes: 0
Views: 871
Reputation: 415
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(); } }
Upvotes: 4