Поскольку рекурсия имеет дополнительные накладные расходы на то, что происходит нажатие и запись записей активации, можно ли это избежать, когда дело доходит до использования констант?Может ли рекурсивная функция знать о константе в функции, в которой она была сначала вызвана, не отправив ей константу в качестве параметра?
Например, если у меня есть функция
void foo(int x) {
int bar = x;
fooAux(root);
}
fooAux(Root * root) {
// Can I somehow do something with the variable bar here?
// {Insert recursive code}
}
Я не уверен, есть ли какой-нибудь способ, кроме прохождения бара в рекурсивную функцию, но это кажется ненужным, поскольку я уверен, что его значение не означают изменение? Может быть, переход по ссылке может облегчить дело? Мысли, пожалуйста.
Возможно, это не самая важная проблема с производительностью, о которой нужно беспокоиться. – user2357112
Как насчет добавления другого аргумента в 'fooAux()'? –
@ H2CO3: Это работает, но это решение, которое OP специально пытается избежать. – user2357112