Методы могут в своих телах вызывать другие методы. После того, как вызванный метод срабатывает, выполнение вызывающего метода продолжается.
Кто-то может задаться вопросом: «Как процессор знает, что ему нужно вернуться именно к строке Console.WriteLine(“3”)
, а не куда-то ещё?» Ответ очень прост, для этого у каждой программы существует отдельная область памяти называемая «стеком», в который записаны адреса возвратов методов и локальные переменные методов. В C# под стек всегда выделяется 1 Мб памяти, если количество данных помещённых в стек превышает данных размер (такое может случиться при использовании очень большого количества локальных переменных и большой вложенности методов), тогда пользователь получит ошибку StackOverfowException
, а его программа досрочно прекратит свою работу.
Источник: видеоурок Александра Шевчука "МЕТОДЫ. РЕКУРСИЯ"