Top.Mail.Ru
Ответы
Аватар пользователя
9лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Глубина рекурсии в рекурсивной функции? C++

Дополнен

Глубина в стеке нужна.

Дополнен
Дополнен

Первичный вызов идёт дефолтным значением глубины = 0

А считать её как?

По дате
По рейтингу
Аватар пользователя
Новичок
9лет

void simpleRecursion(unsigned a, unsigned depth = 0)
{
cout << "value: " << a << " depth: " << depth << endl;

if (a == 0) return; // Условие остановки.

simpleRecursion(a - 1, depth + 1); // Рекурсивный вызов.
}

int main()
{
simpleRecursion(15);
system("pause");
}

Если в дереве и нужно рекурсивно узнать у чилда глубину в дереве:
Проверить есть ли парент:
Если парента нет - остановиться.
Если парент есть, вызвать для него функцию, увеличив счётчик глубины.

Если нужно вывести для всех чилдов глубину:
Начинать с корневого узла.
Проверить есть ли чилды:
Если у узла нет чилдов - остановиться.
Если у узла есть чилды, вызвать функцию для них, увеличив счётчик глубины.

Аватар пользователя
Оракул
9лет

До исчерпания стека - если ТУПО написать код.
Более-менее адекватные люди применяют вот это:
https://ru.wikipedia.org/wiki/Хвостовая_рекурсия