Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamen_Informatika_otvety.doc
Скачиваний:
53
Добавлен:
11.05.2015
Размер:
443.39 Кб
Скачать

31.Аргументы функции: формальные и фактические. Передача аргументов, стек.

Аргументы:

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

void fun(int,char,double); // прототип функции

imt k; // глобальная переменная

main()

{ int n=1;

char c=’a’;

fun(n,c,1.5); // n, c, 1.5 фактические параметры

}

void fun(int nn, char cc, double dd) // nn, cc, dd формальные параметры

{

. . .

}

Стек:

Стек- это конечная последовательность некоторых однотипных элементов - скалярных переменных, массивов, структур или объединений, среди которых могут быть и одинаковые. Стек обозначается в виде: S= и представляет динамическую структуру данных; ее количество элементов заранее не указывается и в процессе работы, как правило изменяется. Если в стеке элементов нет, то он называется пустым и обозначается S=<>.

Допустимыми операциями над стеком являются:

- проверка стека на пустоту S=<>,

- добавление нового элемента Sn+1 в конец стека - преобразование < S1,...,Sn> в < S1,...,Sn+1>;

- изъятие последнего элемента из стека - преобразование < S1,...,Sn-1,Sn> в < S1,...,Sn-1>;

- доступ к его последнему элементу Sn, если стек не пуст.

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

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

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

intfactorial(intn)

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

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

}

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

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

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

voidA() {операторы;

A();

oператоры;}

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

voidA() {операторы;

В();

oператоры;}

voidВ() {операторы;

A();

oператоры;}

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]