Рекурсивный алгоритм

Рассмотрение понятия рекурсия, и его методов. Определение функций, используемых для генерации чисел Фибоначчи с помощью рекурсивного алгоритма. Описание особенностей использования рекурсии в программировании. Основное правило рекурсивного алгоритма.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 26.05.2021
Размер файла 19,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Высшая инженерная школа Набережночелнинский институт Казанский федеральный университет, г. Набережные Челны

Рекурсивный алгоритм

Юнусова Л.Р., Магсумова А.Р.

Аннотация

Юнусова Лилия Рафиковна - магистрант; 2Магсумова Алия Рафиковна - магистрант, направление: информатика и вычислительная техника, магистерская программа: технология разработки программного обеспечения, кафедра информационных систем, отделение информационных технологий и энергетических систем,

в статье рассматривается и анализируется понятие рекурсия, и его существующие методы. Описывается использование рекурсии, и как он представляется в программировании.

Ключевые слова: рекурсия, программирование, программа, подпрограмма.

Основная часть

Рекурсия - это метод определения класса объектов или методов, который сначала определяет одну или несколько (обычно простых) баз или методов, а затем назначает основанное на них правило для создания прямой или косвенной ссылки на эти базовые случаи.

Другими словами, рекурсия - это способ определения объекта или действия сам по себе с использованием ранее определенного частного определения. Используйте рекурсию, когда вы можете выделить самоподобие задачи.

Рекурсивный алгоритм (процедура, функция):

- Если его определение содержит прямые или косвенные обращения к одному и тому же алгоритму, алгоритм называется рекурсией;

- Рекурсивная функция - одно из математических улучшений интуитивной концепции вычислимой функции.

Адаптивный рекурсивный алгоритм - алгоритм, который благодаря рекурсии учитывает определенные индивидуальные особенности, которые решают проблемы из определенной области.

Рекурсивная база - это предложение, которое определяет некоторые начальные условия или условия во время завершения. Обычно в этом предложении пишите простой случай, и вы можете получить немедленный ответ, даже если вы не используете рекурсию.

Рекурсивный шаг - это правило, тело которого должно содержать вызов определенного предиката в качестве дочерней цели.

Подпрограмма - это одна из вещей в рекурсивной функции.

Основное правило рекурсии: перед рекурсивным вызовом должна быть проверка, возвращаемая из рекурсии. Существуют следующие типы рекурсии:

- Прямая рекурсия - напрямую вызывать алгоритм (функцию, процедуру, метод) из текста самого метода;

- Косвенная рекурсия - существует несколько циклических последовательностей вызовов алгоритма;

- Линейная рекурсия - если подпрограмма выполняется только один раз для той же самой подпрограммы, то эта рекурсия называется линейной;

- Ветвь рекурсии - если каждый экземпляр подпрограммы может вызывать себя несколько раз, рекурсия называется нелинейной или «ветвью»;

- Бесконечная рекурсия (на самом деле это соглашение, потому что, когда память компьютера заполнена, программа выдаст ошибку и / или завершит работу в аварийном режиме).

Необходимо рассмотреть особенность рекурсивной программы, например, функции, используемые для генерации чисел Фибоначчи. Каждый рекурсивный уровень в функции Фибоначчи удваивает количество вызовов, поэтому количество рекурсивных вызовов, которые должны вычислить n-е число Фибоначчи, равно 2n.

Поэтому, если возможно, следует избегать рекурсивных программ, таких как программы, которые вычисляют числа Фибоначчи, что привело бы к экспоненциальному увеличению числа вызовов.

Любая проблема, которая может быть решена рекурсивно, также может быть решена итеративно (а не рекурсивно). Рекурсивный алгоритм в программировании реализован в механизме так называемого рекурсивного процесса. Рекурсия - это подпрограмма, на которую прямо или косвенно ссылаются другие подпрограммы, и на которую можно ссылаться вместе с другими фактическими параметрами. В современных системах программирования стек обеспечивает правильную работу подпрограмм, особенно рекурсивных подпрограмм.

Аппаратный стек находится в ОЗУ, а указатель стека содержится в специальной паре регистров SS: SP для программиста. Аппаратный стек расширяется в направлении убывающего адреса с указателем на первый свободный элемент.

PASCAL, C и C ++ используют стек для размещения локальных переменных процесса и других программных блоков. Стек делится на сегменты, которые представляют собой блоки смежных ячеек. Каждый вызов подпрограммы использует фрагмент стека, длина которого зависит от вызывающей подпрограммы. Каждый раз, когда процесс активируется, стек выделяет память для своих локальных переменных, а когда процесс завершается, память освобождается. Поскольку вызовы процедур всегда строго вложены, в верхней части стека всегда есть память, содержащая локальные переменные для текущего активного процесса.

Поэтому, как правило, когда процедура A вызывает процедуру B, происходит следующее:

1. Фрагмент нужного размера размещается сверху стопки. Включает в себя следующие данные:

а) фактические параметры, указывающие на вызов процедуры;

б) пустая ячейка локальной переменной, определенной в процессе Б;

C) Обратный адрес, адрес команды, выполняемой в программе A, выполняется после того, как программа B завершила свою работу.

Если B является функцией, фрагмент стека b содержит указатель на ячейку в фрагменте стека a, в которую следует поместить значение функции (адрес значения).

2. Управление первым оператором, переданным в программу B.

3. После завершения шага B переведите управление на шаг A, используя следующую последовательность шагов:

а) получить адрес возврата с вершины стека;

b) Если B - функция, ее значение сохраняется в ячейке, указанной указателем на адрес значения;

C) извлечь фрагмент стека процесса b из стека и поместить фрагмент процесса a поверх стека;

d) Программа a возобновляется командой, указанной в адресе возврата.

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

Заключение

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

рекурсия алгоритм программирование

Список литературы

1. Божко В.П., Власов Д.В., Гаспариан М.С. Информационные технологии в экономике и управлении. Учебно-методический комплекс. М.: ЕАОИ. 2008 г. С.30-41

2. Колмогоров А.Н. Теория информации и теория алгоритмов. М.: Вильямс, 2017. 240 c.

3. Коротков М.А., Степанов Е.О. Основы теории алгоритмов. М.: Вильямс, 2016. 174 c.

4. Мальцев, А.И. Алгоритмы и рекурсивные функции: моногр. / А.И. Мальцев. М.: Вильямс, 2016. 346 c.

5. Мейерс С. Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14 -- М. Вильямс, 2016. 304 с.

6. Третьяков С.А. CAN на пороге нового столетия // Мир компьютерной автоматизации. 1999. №2 (32). С.45-53.

7. Robert Bosch GmbH «CAN Specification Version 2.0», 1991. (42). С.100-110.

Размещено на Allbest.ru

...

Подобные документы

  • Использование рекурсии в предметных областях. Рекурсивные процедуры и функции в программировании. Создание алгоритмов для рисования графических изображений с использованием рекурсии в среде программирования Pascal ABC. Примеры рекурсии в графике.

    творческая работа [6,7 M], добавлен 01.02.2014

  • Определение функции, ее прототип. Рекурсия - частичное определение объекта через себя. Рекурсивная функция произведения 2-х целых чисел. Задача о вычислении Факториала. Вычисление чисел Фибоначчи. Рекурсивное исполнение программы о Ханойских башнях.

    презентация [1,2 M], добавлен 20.05.2012

  • Исследование понятия рекурсии в программировании. Описание метода, который позволяет разбить задачу на части все меньшего и меньшего размера. Изучение схемы работы рекурсивной процедуры. Способы изображения древовидных структур. Избавление от рекурсии.

    презентация [486,1 K], добавлен 22.10.2013

  • Организация вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих ее операторов обращается сама к себе. Способы программирования алгоритмов с использованием рекурсии. Преимущества и недостатки использования рекурсии.

    лабораторная работа [27,8 K], добавлен 28.05.2012

  • Особенности использования алгоритма Кнута-Морриса-Пратта для определения того, является ли слово A подсловом слова B. Заполнение массива pos согласно алгоритму Бойера-Мура. Сущность алгоритма Рабина как быстрого способа вычисления значения функций.

    реферат [21,0 K], добавлен 30.10.2009

  • Алгоритм логарифмического сдваивания. Средняя степень параллелизма. Характеристики векторных компьютеров. Модель ускорения для параллельной вычислительной системы. Суммирование методом рекурсивного удвоения. Условия выполнения несогласованного алгоритма.

    лекция [183,2 K], добавлен 22.10.2014

  • Более строгое описание алгоритма, чем общее или формализация понятия алгоритма. Три подхода к формализации: теория конечных и бесконечных автоматов, теория вычислимых (рекурсивных) функций и л-исчисление Черча. Воображаемые машины Поста и Тьюринга.

    реферат [370,0 K], добавлен 09.02.2009

  • Понятие и свойства алгоритмов: рекурсивного, сортировки и поиска. Простая программа и структурный подход к разработке алгоритмов. Язык блок-схем и проектирования программ (псевдокод). Рассмотрение принципов объектно-ориентированного программирования.

    презентация [53,1 K], добавлен 13.10.2013

  • Изучение алгоритма рекурсивного спуска и системы построения грамматики с помощью лексического анализатора Lex. Написание программы интерпретатора языка разметки HTML. Проверка входной последовательности на корректность входа как общая функция программы.

    контрольная работа [226,7 K], добавлен 25.12.2012

  • Характеристика вероятностного алгоритма и особенности его использования. Принцип работы и назначение генератора случайных чисел, сущность псевдослучайных чисел. Рассмотрение и реализация метода середины квадрата, разработка алгоритма и его кодирование.

    курсовая работа [50,3 K], добавлен 18.09.2009

  • Определение уравнения одной и двух прямых на плоскости. Составление рекурсивного алгоритма построения всевозможных простых замкнутых ломаных через n произвольных точек методом треугольника и его реализация с помощью языка программирования Turbo Pascal.

    курсовая работа [475,9 K], добавлен 25.02.2010

  • Написание программы для генерации случайных чисел, в которой реализуются возможности генерации абсолютно случайных чисел. Приложение на языке С/С++. Описание узла, содержащего данные; функций и методов работы; чтения данных из памяти и вывода их на экран.

    курсовая работа [172,4 K], добавлен 23.05.2012

  • Обзор существующих методов межпроцедурного анализа. Получение входных и выходных данных подпрограмм с помощью графа алгоритма. Описание входных и выходных данных подпрограммы в терминах фактических параметров. Определение параллелизма по графу алгоритма.

    учебное пособие [77,5 K], добавлен 28.06.2009

  • Обратная трассировка лучей: ограничения при реализации, достоинства и недостатки. Математические и физические предпосылки алгоритма, блок-схема. Выбор языка программирования. Зависимость времени генерации от глубины рекурсии, количества источников.

    курсовая работа [503,0 K], добавлен 27.05.2013

  • Анализ и характеристика рекурсивного алгоритма решения задачи о Ханойских башнях, а также порядок его временной сложности в соответствии с пошаговым алгоритмом. Методика и особенности разработки программы, печатающей последовательность действий, ее текст.

    курсовая работа [247,8 K], добавлен 08.02.2010

  • Определение понятия "алгоритм". Изображение схемы алгоритма. Разработка схемы действий и этапы решения задач. Рассмотрение функции разрабатываемого приложения. Распределение исходного кода по файлам проекта. Контрольный пример и описание результатов.

    реферат [695,9 K], добавлен 28.09.2014

  • Изучение понятия и свойств алгоритма. Определение сущности технологии Robson. Исполнитель, а также блок-схема алгоритма или его графическое представление, в котором он изображается в виде последовательности связанных между собой функциональных блоков.

    реферат [155,9 K], добавлен 19.10.2013

  • Основные свойства алгоритма. Формальный и неформальный исполнитель алгоритма, система его команд. Способы записи алгоритма. Словесное описание, построчная запись, опорный конспект. Характеристики алгоритмического языка. Выполнение алгоритма компьютером.

    презентация [2,0 M], добавлен 04.04.2014

  • История создания алгоритма Форда-Фалкерсона, краткое описание его алгоритма, особенности работы, анализ сложности. Создание распараллеленного варианта алгоритма и его краткое описание. Основные характеристики теории графов, специфика, пути и маршруты.

    контрольная работа [246,3 K], добавлен 06.08.2013

  • Понятие и особенности организации технологии CUDA, принципы реализации алгоритма с его помощью. Генерация случайных чисел. Оценка производительности исследуемой технологии, специфика построения графических программ на основе, преимущества использования.

    контрольная работа [102,7 K], добавлен 25.12.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.