36298

Понятие рекурсии. Прямая и косвенная рекурсия

Доклад

Информатика, кибернетика и программирование

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

Русский

2013-09-21

23.5 KB

18 чел.

Понятие рекурсии. Прямая и косвенная рекурсия.

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

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

n!= (n-1)!*n,   где n = 1, 2, 3,…

Пример. Программа, которая запрашивает ввод числа и затем выводит на экран значение факториала от него.

Var     k: integer;

Function  fakt (n: integer):longint;

 Begin

If n=1 then  fakt :=1

 Else fakt :=  fakt (n-1) *n;

  End;

 Begin

Writeln (‘ введите число ‘);

Readln (k);

Writeln (k, ‘ ! =  ‘,fakt(k));

  End.

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

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

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

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

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


 

А также другие работы, которые могут Вас заинтересовать

27194. Франко-германская война 1870-1871 гг. и парижская Коммуна 1871 г. и их место в историческом процессе 37 KB
  19 сентября немецкие войска осадили Париж = голод зима безденежье = народные восстания = меры правительства: запрет на взыскание платы за аренду и по кредитам = бунты продолжались = 28 января 1871 г. По мере уплаты контрибуций германские войска покидали оккупированные территории. Вооруженные силы ПК значительно уступали по численности и подготовки Версальским войскам которых к тому же поддерживали германские оккупационные войска. 21 мая версальские войска ворвались в Париж.
27195. Общие черты и особенности эк. и П. развития стран Западной Европы и США в конце 19- начале 20 века 67.5 KB
  Развития стран Западной Европы и США в конце 19 начале 20 века. Европейские страны кроме Германии и США отставали от Англии в темпах роста. индустриальными были всего 3 страны Германия США Англия а аграрноиндустриальными были Россия Австрия Фр. развития уступая США.
27200. Особенности раскола раб. движения после 1МВ. и субъективные причины появления Коментерна и РСИ 42 KB
  под ее влиянием револ. течения: революционное левый ревизионизм реформистское правый ревизионизм центриское. револ. – были реформистами оппортунистами боящимися револ.