Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция7-8_модульность.doc.doc
Скачиваний:
14
Добавлен:
12.02.2015
Размер:
81.92 Кб
Скачать
    1. Программирование рекурсивных алгоритмов

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

Например, функции AиBявляются косвенно рекурсивными.

void A(int );

void B (int b) {… A(…); …}

void A (int a) {… B(…); …}

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

Например, функция А является рекурсивной:

void A (int a) {… A(…); …}

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

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

Классический пример рекурсивной функции – вычисление факториала:

long factorial (int k)

{

if(k<0)return0; // нерекурсивный выход

if(k==0)return1; // нерекурсивный выход

returnk*factorial(k-1);

}

    1. Функции стандартной библиотеки языка с для работы со строками (string.H) (см. Пособие)

    2. . Функции стандартной библиотеки языка с для работы с файлами (stdio.H) (см. Пособие)