АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Рекурсивные функции

Читайте также:
  1. II. Функции тахографа и требования к его конструкции
  2. MS Excel.Текстовые функции, примеры использования текстовых функций.
  3. SCADA-система: назначение и функции
  4. V2: Электронные таблицы. Встроенные функции.
  5. А) Рабочее место б) Функции
  6. Автоматическая настройка УОЗ на атмосферном двигателе с помощью функции замеров ускорения.
  7. Активный и пассивный словарь. Историзмы и архаизмы. Типы архаизмов. Стилистические функции.
  8. Анатомия пищев.канала: отделы,сфинктеры и клапаны,их положение,строение и значение для пищев.функции.
  9. Антонимы. Типы антонимов. Антонимия и полисемия. Стилистические функции антонимов (антитеза, антифразис, амфитеза, астеизм, оксюморон и т.д.). Энантиосемия. Словари антонимов.
  10. Банки и банковская система. Центральный банк, его функции
  11. Биогенные амины,происхождение,функции
  12. Булевы функции.

Рекурсия – это способ организации обработки данных в функции, когда функция обращается сама к себе прямо или косвенно.

Функция называется косвенно рекурсивной, если она содержит обращение к другой функции, которая содержит прямой или косвенный вызов определяемой (первой) функции.

Если в теле функции явно используется вызов этой функции, то имеет место прямая рекурсия.

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

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

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

При выполнении рекурсивной функции происходит многократный ее вызов, при этом

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

2) переменным с классом памяти extern и static память выделяется один раз, которая сохраняется в течение всего времени программы;

3) вызов рекурсивной функции происходит до тех пор, пока не будет получено конкретное значение без рекурсивного вызова функции.

Примеры:

1) Определить функцию, возвращающую значение факториала целого числа. Факториал определятся только для положительных чисел формулой: , и факториал нуля равен 1 (0! =1).

Определение факториала можно переписать в виде “математической рекурсии“: , то есть факториал вычисляется через факториал. Соответственно определение функции:


1 | 2 | 3 | 4 | 5 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.002 сек.)