Скачать презентацию Рекурсивные функции Введение Определение Примеры использования Введение Скачать презентацию Рекурсивные функции Введение Определение Примеры использования Введение

lec_8_recurseFunctions.ppt

  • Количество слайдов: 10

Рекурсивные функции Введение. Определение. Примеры использования… Рекурсивные функции Введение. Определение. Примеры использования…

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

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

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

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

С чего начинать… Самое важное в определении рекурсии - выделить те условия, которые соблюдаются С чего начинать… Самое важное в определении рекурсии - выделить те условия, которые соблюдаются во всех точках процесса и обеспечить их справедливость от входа в рекурсивную функцию до ее рекурсивного вызова. Очевидно, что рекурсия не может быть безусловной, в этом случае она становится бесконечной. Рекурсия должна иметь внутри себя условие завершения, по которому очередной рекурсивный вызов уже не производится. “Категорически не приветствуется” заглядывать в следующий шаг рекурсии или интересоваться состоянием процесса на предыдущем шаге.

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

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

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