Олий таълим ўқув режаларидаги фанларга



Download 4,03 Mb.
bet59/102
Sana23.02.2022
Hajmi4,03 Mb.
#136190
1   ...   55   56   57   58   59   60   61   62   ...   102
Bog'liq
Dasturlash asoslari majmua

Рекурсив методлар

Ўзини ўзи чақирадиган методларни рекурсив деб аталади. Бундай рекурсия тўғри рекурсия дейилади. Ёндош рекурсияда икки ёки ундан ортиқ методлар бир-бирини чақиради. Агар метод ўзини ўзи чақирса, стекда унинг параметрлари қийматларининг нусхалари яратилади. Сўнгра бошқарув методнинг биринчи бажариладиган операторига узатилади. Такрорий чақиришда бу жараён такрорланади.
Ҳар бир рекурсив методда ҳисоблаш жараёнини тугатиш учун ҳеч бўлмаганда битта норекурсив тармоққа эга бўлиши зарур. Метод ўз ишини тугатганидан кейин банд қилинган стеклар бўшатилади ва бошқарув чақирувчи методга узатилади.
Рекурсив функцияга яққол мисол қилиб факториални ҳисоблаш функциясини олиш мумкин. Маълумки,

long fact( long n ) {
if ( n == 0 || n == 1 ) return 1; // норекурсив тармоқ
return ( n * fact( n – 1 ) ); // рекурсив тармоқ
}
Худди шу амални қисқароқ ҳам ёзиш мумкин:
long fact( long n ) {
return ( n > 1 ) ? n * fact( n – 1 ) : 1;
}
Кўпинча рекурсив методлардан рекурсив алгоритмларни компакт формада ёзиш мақсадида фойдаланилади. Рекурсиянинг камчилиги методни такрорий чақириш ва маълумотларни узатиш учун кўп вақт хамда хотирадан катта ҳажм талаб қилиши билан боғлиқ.
    1. Ўзгарувчан сондаги параметрли методлар


Айрим холларда турли сондаги аргументларни узатиш билан боғлиқ методларни яратишга тўғри келади. C# дастурлаш тилида бу амални params хизматчи сўзи ёрдамида ташкил қилиш мумкин. бу хизматчи сўздан кейин кўрсатилган параметр параметрлар рўйхатининг сўнгида ёзилади ва номаълум узунликдаги массив деган маъносни англатади. Масалан:
public int Calculate( int a, out int c, params int[] d ) …
Бу методга уч ва ундан ортиқ параметрларни узатиш мумкин. Метод ичида учинчи параметрдан бошлаб қолган параметрларга оддий массив элементлари сифатида қаралади. Элементлар миқдорини массив унинг Length ҳусусиятидан олади. Намуна сифатида массивнинг ўрта арифметик қийматини ҳисоблашни кўрайлик (14.1-листинг).
using System;
namespace ConsoleApplication1
{ class Class1
{
public static double Average( params int[] a )
{
if ( a.Length == 0 )
throw new Exception( "Методнинг аргументлари етарли эмас " );

double av = 0;


foreach ( int elem in a ) av += elem;
return av / a.Length;
}

static void Main()


{ try
{
int[] a = { 10, 20, 30 };
Console.WriteLine( Average( a ) ); // 1
int[] b = { -11, -4, 12, 14, 32, -1, 28 };
Console.WriteLine( Average( b ) ); // 2
short z = 1, e = 12;
byte v = 100;
Console.WriteLine( Average( z, e, v ) ); // 3
Console.WriteLine( Average() ); // 4
}
catch( Exception e )
{
Console.WriteLine( e.Message );
return;
}
}
}
}
19.1-листинг. ЎЗгарувчан миқдордаги параметрли метод
Дастурнинг натижаси қуйидагича:
10
20
40
Методнинг аргументлари етарли эмас
Параметр-массив фақат битта бўлади ва рўйхатнинг охирида кўрсатилади. Унга мос аргументлар типларини ошкормас кўринишда массивнинг типига ўтказилиши мумкин бўлиши

    1. Download 4,03 Mb.

      Do'stlaringiz bilan baham:
1   ...   55   56   57   58   59   60   61   62   ...   102




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