Имеется такая функция, которая вызывает сама себя, то есть рекурсивная. Допустим n = 5. Нужно посчитать сумму элементов, которые отобразятся на консоль (но это просто к слову).
Сначала вроде все понятно. Последовательность будет такой 5 4 3 2 1 0. Вот дальше не могу понять, в дебаге это выглядит так так - 0 по условию не подходит и естественно в тело if не попадает, но по достижению последней скобки, в обратную сторону идет(то есть выполнение функции начинается не сначала, а с конца) На фото последовательность вызовов и каким-то образом попадает в if и n = 1. Как это происходит? Я не могу понять
static public void F(int n)
{
Console.Write(n + " ");
if (n > 0)
{
F(n - 1);
F(n - 3);
}
}
В этом суть рекурсии, она вызывает сама себя, потом возвращает управление, но в то место, где была вызвана
Поэтому получается, что сначала функция уходит вглубь и доходит до n
равное 0
, потом потом возвращает управление предыдущей функции, где n
ещё было равно единице и заходит в функцию F(n-3);
где становится равным -2
, потом возвращает значение функции, где n
равно единице, потом происходит выход и из неё, где она возвращает управление функции, где n равно 2
и т.д.
Хороший способ понять рекурсию обойти дерево в глубину.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Сейчас я только понял как добавить в источники данных БДДальше не могу понять, как поступить дальше
Ругается на picturebox1 - хотя на форме он естьВо время выполнения NullReferenceException