Каждый раз, когда вы вызываете функцию, вы используете стек! Когда вы делаете что-то одно и вам нужно идти делать что-то другое, вы должны «отложить» то, над чем вы работали, и начать работать над чем-то другим. Каждый раз, когда вы что-то заканчиваете, вам нужно возобновить то, что вы «откладывали» последним. Все, что вы «опускаете», образует стек.
Для вызова функции необходимо «поместить» то, что вы делали, в стек. Для возврата из функции требуется «вытолкнуть» то, что вы в последний раз нажали, чтобы вернуться к ней.