Студопедия
Главная страница | Контакты | Случайная страница

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

Рекурсивные программы.

Читайте также:
  1. Cтруктура Pascal-программы.
  2. III. Особенности программы.
  3. Билет 25. Типы рынков и формирование эффективной маркетинговой программы.
  4. Виды управляющих конструкций программы.
  5. Вопрос №22. Сценарий и режиссура театрализованного концерта. Принципы составления концертной программы.
  6. Вопрос№28 Движение декабристов: тайные общества и их программы.
  7. Вспомогательные программы.
  8. Гибкая система при выборе выплаты страховой суммы по окончании действия программы.
  9. Можно сказать, что операционная система является средой, в которой выполняются остальные программы.
  10. Недостаточность кровообращения. Классификации, клиника, лечебные программы.

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

int factorial (int n)

{

if (n<=0) return 1; // рекурсия закончилась

else return n*factorial(n-1); //рекурсивный вызов

}

Функция factorial вызывает сама себя, если n>0.

Обычно, в программировании под рекурсией понимают такую реализацию, в которой подпрограмма использует в своем теле вызов самой себя. Такие вызовы называют рекурсивными. Когда функция А в своем теле вызывает только одну рекурсивную функцию (саму себя), то говорят о простой рекурсии. Под косвенной рекурсией понимают явление, когда рекурсивные функции вызывают друг друга (например, функция А вызывает В, а функция В вызывает А).

Прямая рекурсия:

void A() {

операторы;

A();

oператоры;

}

Косвенная рекурсия:

void A() {

операторы;

В();

oператоры;

}

void В() {

операторы;

A();

oператоры;

}

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

46. Функции для работы со строками: сравнение, копирование.

Строка представляет собой массив символьных переменных, заканчивающийся специальным нулевым символом. В языке С признаком окончания строки служит символ '/0'. Т.о. строка содержит символы, составляющую строку, а также нулевой символ.

Объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов. Например, объявление массива str, предназначенного для хранения строки из 10 символов, должно выглядеть так:

char str[11];

Последний, 11-ый байт предназначен для нулевого символа.

Записанная в тексте программы строка символов, заключенных в двойные кавычки, является строковой константой, например, «некоторая строка».

В конец строковой константы компилятор автоматически добавляет нулевой символ.

Для обработки строк в С определено много различных библиотечных функций.

Имя функции strcpy(s1, s2) – копирование s2 в s1.

Имя функции strcmp(s1,s2) возвращает 0, если s1 и s2 совпадают, отрицательное значение, если s1<s2 и положительное значение, если s1>s2.

Следует помнить, что strcmp() принимает значении ЛОЖЬ, если строки совпадают.

Эти функции объявлены в заголовочном файле <string.h>.

47. Функции для работы со строками: поиск в строке.

Строка представляет собой массив символьных переменных, заканчивающийся специальным нулевым символом. В языке С признаком окончания строки служит символ '/0'. Т.о. строка содержит символы, составляющую строку, а также нулевой символ.

Объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов. Например, объявление массива str, предназначенного для хранения строки из 10 символов, должно выглядеть так:

char str[11];

Последний, 11-ый байт предназначен для нулевого символа.

Записанная в тексте программы строка символов, заключенных в двойные кавычки, является строковой константой, например, «некоторая строка».

В конец строковой константы компилятор автоматически добавляет нулевой символ.

strchr

char *strchr(const char *str, int c);

ищет в строке str первое вхождение символа с. Возвращает NULL, если символ в строке отсутствует.

strrchr

char *strrchr (const char *str, int c);

ищет в строке str последнее вхождение символа с. Возвращает NULL, если символ в строке отсутствует.

strstr

char *strstr (const char *str1, const char *str2);

ищет в строке str1 подстроку str2. Возвращает указатель на тот элемент в строке str1, с которого начинается подстрока str2., или NULL, если подстрока str2 в строке str1 отсутствует.

strpbrk

char *strpbrk(const char *str1, const char *str2);

ищет в строке str1 первое вхождение любого символа из строки str2. Возвращает NULL, если такой символ в строке отсутствует.

strtok

char *strtok(char *str1, const char *str2);

ищет в строке str1 лексемы, выделенные символами из второй строки str2.

 

48. Функции для работы со строками: преобразование форматов.

Строка представляет собой массив символьных переменных, заканчивающийся специальным нулевым символом. В языке С признаком окончания строки служит символ '/0'. Т.о. строка содержит символы, составляющую строку, а также нулевой символ.

Объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов. Например, объявление массива str, предназначенного для хранения строки из 10 символов, должно выглядеть так:

char str[11];

Последний, 11-ый байт предназначен для нулевого символа.

Записанная в тексте программы строка символов, заключенных в двойные кавычки, является строковой константой, например, «некоторая строка».

В конец строковой константы компилятор автоматически добавляет нулевой символ.

str1wr

char *str1wr(const char *str);

преобразует буквы верхнего регистра в строке в соответствующие буквы нижнего регистра.

strupr

char *strupr(const char *str);

преобразует буквы нижнего регистра в строке в соответствующие буквы верхнего регистра.




Дата добавления: 2015-02-16; просмотров: 95 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.01 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав