Есть рекурсивная функция 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() { }
boolean_variable == false
! Пожалуйста, используйтеif (!cond)
илиif (not cond)
(как эквивалентные, так и стандартные, хотя я не уверен, что даже MSVC++ 2010 поддерживаетnot
- думаю, они слишком беспокоятся о нарушении кода, где люди не называли свою переменную). - person Tony Delroy   schedule 08.04.2011not
не является ключевым словом C. - person JeremyP   schedule 08.04.2011