7. Чизиқли жараёнларни дастурлаш


Натижа: 10.5. Рекурция


Download 478.36 Kb.
bet20/32
Sana28.12.2022
Hajmi478.36 Kb.
#1016431
1   ...   16   17   18   19   20   21   22   23   ...   32
Bog'liq
С да дастурлаш 1 кисм 1 семестр

Натижа:

10.5. Рекурция
Рекурция деб ўзига ўзи мурожаат қилувчи функцияга айтилади. Рекурция 2 турда бўлади. Улар бевосита ва билвосита рекурциядир. Бевосита рекурция бу функция ўзига – ўзи тўғридан – тўғри мурожаат қилади. Билвосита рекурция бир функция иккинчи функцияга мурожаат қилса ва ўз навбатида иккинчи функция биринчи функцияга мурожаатидан ҳосил бўлади. Мисол учун факториални ҳисоблаш функциясини келтирамиз:
long fact(int k)
{
if (k<0) return 0;
if (k==0) return 1;
else return k*fact(k-1);
}
Манфий аргумент учун функция 0 қиймат қайтаради. Параметр 0 га тенг бўлса, функция 1 қиймат қайтаради. Акс ҳолда параметр қиймат бирга камайтирилган ҳолда функциянинг ўзи чақирилади ва узатилган параметрга кўпайтирилади. Функциянинг ўз – ўзини чақириш формал параметр қиймати 0 га тенг бўлганда тўҳтатилади. Кейинги мисолимизда иҳтиёрий ҳақиқий соннинг бутун даражасини ҳисоблаш рекурцив функциясини келтирамиз.
double expo(double a, int n)
{
if (n==0) return 1;
if (a==0.0) return 0;
if (n>0) return a*expo(a,n-1);
if (n<0) return expo(a,n+1)/a;
}
Мисол учун функцияга expo(2.0,3) шаклда мурожаат қилинганда рекурцив равишда функциянинг иккинчи параметри камайган ҳолда мурожаатлар ҳосил бўлади:
expo(2.0,3), expo(2.0,2), expo(2.0,1), expo(2.0,0).
Бу мурожаатларда қуйидага кўпайтма ҳисобланади: 2.0*2.0*2.0*1 ва керакли натижа ҳосил қилинади.
Назорат саволлари:

  1. Функция нима?

  2. Процедура нима?

  3. Қиймат қайтармайдаган функциялардан қийматни олиб чиқса бўладими?

11. Такрорланувчи жараёнлар ва уларнинг турлари


Режа:

  1. Такрорланувчи жараёнлар ҳақида тушунча ва унинг операторлари

  2. Такрорланувчи жараёнларни дастурлаш

  3. Ичма – ич жойлашган такрорланувчи жараёнлар

11.1. Такрорланувчи жараёнлар ҳақида тушунча ва унинг операторлари
Олдинги мавзуда санаб ўтилган жараёнлардан бири, такрорланувчи жараёнларни ҳисобланади. Такрорланувчи жараённи шартли операторлардан фойдаланиб ҳам ташкил қилса бўлади, лекин бундай жараёнларни ҳисоблашни такрорлаш операторлари ёрдамида амалга ошириш осонроқ кечади.
Такрорлаш операторларининг 3 хил тури мавжуд:

  • параметрли такрорлаш оператори;

  • do…while такрорлаш оператори (Шарти кейин берилган такрорланиш оператори);

  • while такрорлаш оператори (Шарти олдин берилган такрорланиш оперетори).

Ечилаётган масаланинг моҳиятига қараб, дастурчи ўзи учун қулай бўлган такрорлаш операторини танлаб олиши мумкин.
Параметрли такрорланиш оператори қуйидагидан иборат:
for( int i = k1; i <= k2; i++)
ёки
for( int i = k2; i >= k1; i––)
бу ерда k1Параметрли такрорланиш оператори аниқ такрорланишга эга бўлган дастурлар учун дастурчига қийинчилик туғдирмайди.
Кўпгина ҳолларда, такрорланувчи жараёнлардаги такрорланишлар сони олдиндан маълум бўлмайди, циклдан чиқиш эса маълум бир шартнинг бажарилиши ёки бажарилмаслигига боғлик ҳолда бўлади. Бу ҳолларда шарти кейин берилган такрорланиш оператори ёки шарти олдин берилган такрорланиш операторидан фойдаланиш зарур. Агар циклдан чиқиш шарти, такрорланувчи жараённинг охирида жойлашган бўлса, do…while() операторидан, бош қиcмида жойлашган бўлса while() операторидан фойдаланиш мақсадга мувофиқдир. Шарти кейин берилган такрорланиш оператори камида бир марта такрорланади, шарти олдин берилган такрорланиш оператори умуман такрорланмаслиги ҳам мумкин.
Шарти кейин берилган такрорланиш операторининг кўриниши қуйидагича:
do {
<операторлар кетма - кетлиги>
}
while(<шарт>)
Шарти олдин берилган такрорланиш операторининг кўриниши қуйидагича:
while(<шарт>) {
<операторлар кетма - кетлиги>
}
Иккила ҳолда ҳам шарт ёлғон қиймат қабул қилса, цикл бажарилишидан тўҳтайди. Агар шарт рост бўлса, цикл давом этади.
11.2. Такрорланувчи жараёнларни дастурлаш
1 – мисол: 1 дан 100 гача бўлган сонларнинг йиғиндисини топинг.

Download 478.36 Kb.

Do'stlaringiz bilan baham:
1   ...   16   17   18   19   20   21   22   23   ...   32




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