4. способы повышения эффективности алгоритмов



Download 348 Kb.
bet7/16
Sana29.04.2022
Hajmi348 Kb.
#592045
1   2   3   4   5   6   7   8   9   10   ...   16
Bog'liq
Гл.4 ЭФФЕКТИВНОСТЬ АЛГОРИТМОВ.

4.2.1. Рекурсия.

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


Рекурсия является особенно мощным средством в математических определениях. В качестве примеров рассмотрим определения натуральных чисел, древовидных структур и функции факториал:
1. Натуральные числа:
а) 1 есть натуральное число;
б) целое число, следующее за натуральным, есть натуральное число (х'=x+1).
2. Древовидные структуры :
а)О-есть дерево (называемое пустым деревом);
б) если Т1 и Т2 - деревья, то есть дерево (нарисованное сверху вниз):

3. Функция факториал n! для неотрицательных целых чисел :
а) 0!=1;
б) если n>0, то n! = n(n-1)!.
Мощность рекурсии связана с тем, что она позволяет определять бесконечное множество объектов с помощью конечного высказывания. Точно так же бесконечные вычисления можно описать с помощью конечной рекурсивной программы, даже если эта программа не содержит явных циклов. Однако лучше всего использовать рекурсивные алгоритмы в тех случаях, когда решаемая задача, или вычисляемая функция, или обрабатываемая структура данных определена с помощью рекурсии. В общем виде рекурсивную программу P можно изобразить как композицию R базовых операторов Si(не содержащих P) и самой P:
PR [Si, P]. (4.1)
Необходимое и достаточное средство для рекурсивного представления программ - это описание процедур, или подпрограмм, так как оно позволяет присваивать какому-либо оператору имя, с помощью которого можно вызывать этот оператор.
С процедурой принято связывать некоторое множество локальных объектов, т.е. переменных, констант, типов и процедур, которые определены только в этой процедуре, а вне ее не существуют или не имеют смысла. Каждый раз, когда такая процедура рекурсивно вызывается, для нее создается новое множество локальных переменных. Хотя они имеют те же имена, что и соответствующие элементы множества локальных переменных, созданного при предыдущем обращении к этой процедуре, их значения различны. Следующие правила области действия идентификаторов позволяют исключить какой-либо конфликт при использовании имен: идентификаторы всегда ссылаются на множество переменных, созданное последним; то же правило относится и к параметрам процедуры.
В качестве примера рекурсивного алгоритма рассмотрим процедуру прохождения двоичного дерева во внутреннем порядке с присвоением узлам соответствующего номера.
Алгоритм 4.1.Нумерация узлов двоичного дерева в соответствии с внутренним порядком (INOR - INternal ORder).
ВХОД. Двоичное дерево, представленное массивами LES(LEFT Son-левый сын) и RIS(RIght Son-правый сын).
ВЫХОД. Массив, называемый NUM (NUMber - номер), такой, что NUM[i] - номер узла i во внутреннем порядке.
МЕТОД. Кроме массивов LES, RIS и NUM, алгоритм использует глобальную переменную COT (COunT-счет), значение которой - номер очередного узла в соответствии с внутренним порядком. Начальное значение переменной СОТ является 1. Параметр ND (NoDe-узел) вначале равен RT (RooT - корень). Процедура, изображенная на рис.4.1, применяется рекурсивно.
Сам алгоритм таков :

Download 348 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   ...   16




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish