Использование стека для организации рекурсивных вызовов

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Испо́льзование сте́ка для организа́ции рекурси́вных вы́зовов — процедура, позволяющая реализовать вызов подпрограммы из самой себя[1].

Определения[править]

Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу ПП-ПВ (от англ. LIFO — «last in — first out»), «последним пришёл — первым вышел».

Стек вызовов — стек, хранящий информацию для возврата управления из подпрограмм или функций обратно в программу или подпрограмму, во вложенных или рекурсивных вызовах.

Процедура работы со стеком вызова следующая. Вначале, при вызове подпрограммы, в стек заносится адрес, называемый адресом возврата, а управление передаётся подпрограмме. В памяти остаётся адрес следующей инструкции прерванной программы, чтобы возобновить её выполнение после отработки подпрограммы. Эта процедура может повторяться при последующем рекурсивном вызове, и в стек будет занесён последующий адрес возврата, и так далее. После отработки подпрограммы из стека извлекается адрес возврата и исполняется следующая инструкция прерванной программы, и так далее, пока стек не освободится от адресов возврата. Такой вид стека называется программным.

В процессорах стек может быть (и обычно бывает) организован на аппаратном уровне, его называют аппаратный стек. Он расположен в ОЗУ, а указатели стека — в специальных регистрах, запись в которые доступна системному программисту.

См.также[править]

Примечания[править]

  1. Волк В. К. Базы данных. Проектирование, программирование, управление и администрирование. — СПб.: Лань, 2020.

Литература[править]

  • Голицына О. Л., Максимов Н. В., Попов И. И. Базы данных: учебное пособие. — М. : ФОРУМ : ИНФРА-М, 2008.
  • Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. Базы данных: учебное пособие. — М. : Бином-Пресс, 2007.
  • Чигарина Е. И. Проектирование и реализация баз данных средствами СУБД ACCESS: методические указания. — Самара : Изд-во СГАУ, 2009.

Ссылки[править]

Рувики

Одним из источников, использованных при создании данной статьи, является статья из википроекта «Рувики» («ruwiki.ru») под названием «Использование стека для организации рекурсивных вызовов», расположенная по адресу:

Материал указанной статьи полностью или частично использован в Циклопедии по лицензии CC-BY-SA 4.0 и более поздних версий.

Всем участникам Рувики предлагается прочитать материал «Почему Циклопедия?».