Использование стека для организации рекурсивных вызовов
Испо́льзование сте́ка для организа́ции рекурси́вных вы́зовов — процедура, позволяющая реализовать вызов подпрограммы из самой себя[1].
Определения[править]
Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу ПП-ПВ (от англ. LIFO — «last in — first out»), «последним пришёл — первым вышел».
Стек вызовов — стек, хранящий информацию для возврата управления из подпрограмм или функций обратно в программу или подпрограмму, во вложенных или рекурсивных вызовах.
Процедура работы со стеком вызова следующая. Вначале, при вызове подпрограммы, в стек заносится адрес, называемый адресом возврата, а управление передаётся подпрограмме. В памяти остаётся адрес следующей инструкции прерванной программы, чтобы возобновить её выполнение после отработки подпрограммы. Эта процедура может повторяться при последующем рекурсивном вызове, и в стек будет занесён последующий адрес возврата, и так далее. После отработки подпрограммы из стека извлекается адрес возврата и исполняется следующая инструкция прерванной программы, и так далее, пока стек не освободится от адресов возврата. Такой вид стека называется программным.
В процессорах стек может быть (и обычно бывает) организован на аппаратном уровне, его называют аппаратный стек. Он расположен в ОЗУ, а указатели стека — в специальных регистрах, запись в которые доступна системному программисту.
См.также[править]
Примечания[править]
- ↑ Волк В. К. Базы данных. Проектирование, программирование, управление и администрирование. — СПб.: Лань, 2020.
Литература[править]
- Голицына О. Л., Максимов Н. В., Попов И. И. Базы данных: учебное пособие. — М. : ФОРУМ : ИНФРА-М, 2008.
- Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. Базы данных: учебное пособие. — М. : Бином-Пресс, 2007.
- Чигарина Е. И. Проектирование и реализация баз данных средствами СУБД ACCESS: методические указания. — Самара : Изд-во СГАУ, 2009.
Ссылки[править]
![]() | Одним из источников, использованных при создании данной статьи, является статья из википроекта «Рувики» («ruwiki.ru») под названием «Использование стека для организации рекурсивных вызовов», расположенная по адресу:
Материал указанной статьи полностью или частично использован в Циклопедии по лицензии CC-BY-SA 4.0 и более поздних версий. Всем участникам Рувики предлагается прочитать материал «Почему Циклопедия?». |
---|