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() { }
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(); } }
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.