Как работает рекурсия?
int func(int n)
{
if (n == 1)
{
return 1;
}
return func(n - 1) + 2;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int n, d;
cout << "Який член прогресії за рахунком ? - ";
//cin >> n;
d = func(4);
if (d <= 21)
{
cout << d << endl;;
}
system("pause");
}
Как тут работает рекурсия? Значение n меняется от 4 до 1, как потом работает алгоритм? Нужно найти n-ый член последовательности 1, 3, 5 ... 21 В примере 4-ый спасибо
Ответы (1 шт):
Автор решения: banana
→ Ссылка
- Вызывается func(4) в которой идет проверка не единица ли в параметре, если нет, то вызывается func(3) + 2
- Вызывается func(3) в которой идет проверка не единица ли в параметре, если нет, то вызывается func(2) + 2
- Вызывается func(2) в которой идет проверка не единица ли в параметре, если нет, то вызывается func(1) + 2
- Вызывается func(1) и так как в параметре единица, то она возвращается в п.3
- Вместо func(1) + 2, вернулась 1 и мы получаем выражение 1 + 2, которое возвращается в п.2
- Вместо func(2) + 2, вернулась 3 и мы получаем выражение 3 + 2, которое возвращается в п.1
- Вместо func(3) + 2, вернулась 5 и мы получаем выражение 5 + 2, которое возвращается как результат 7.