Предполагая, что рекурсивный вызов add
возвращает, да, значение acc
внутри функции, которая сделала рекурсивный вызов на первом месте, действительно будет установлено равным нулю. Вы можете думать, что код работает так:
if ( condition ) {
make a call to add(myVal);
wait for that call to return;
acc = 0;
}
Важная деталь, однако, заключается в том, что, предполагая, что acc
является локальной переменной в функции, она будет установлена на ноль только в вызывающей функции , а не в рекурсивном вызове, который вы сделали. Например, если ваш код выглядит так:
void add( int value )
{
int acc = 1;
cout << acc << endl;
if ( condition ) {
add(myVal);
acc = 0;
}
}
Тогда, если вы сделаете рекурсивный вызов, который вы указали, вывод оператора cout
в рекурсивном вызове все равно будет 1
, потому что значение acc
в этом конкретном рекурсивном вызове не зависит от значения acc
в других рекурсивных вызовах.
Надеюсь, это поможет!