Kommunikatsiyalarini rivojlantirish vazirligi al-xorazmiy nomidagi toshkent axborot texnologiyalari


Download 372.14 Kb.
Pdf ko'rish
bet2/3
Sana26.01.2023
Hajmi372.14 Kb.
#1127791
1   2   3
Bog'liq
dasturlash 11-mustaqil ish Rekursiv jarayonlar (1)

n

=(xl,x2,...,xn)=x
m
1<=m<=n (prоеktоr funksiyalаr); 
Yangi funksiyalаrni qurаdigаn оpеrаtоrlаr sifаtidа quyidаgi uchtаsini tаnlаb оlаmiz: 

supеrpоzisiya оpеrаtоri; 

primitiv rеkursiya оpеrаtоri; 

minimizаsiya оpеrаtоri 
Rekursiv funksiya qaysidir vaqtga kelib o'ziga murojaat qilishni to'xtatishi kerak bo'ladi. Aynan 
shu narsani rekursiya asos sharti ta'minlab beradi. Hikoyamizdagi misolga qaytadigan bo'lsak, 
Abdullajon summa() funksiyasiga bir necha marta murojaat qildi va oxirida funksiyaga keluvchi 
massivda faqat bitta element qolganda to'xtadi. Bu masala uchun arrayda yagona element qolishi 
asos shart bo'lib xizmat qiladi va shu yerga yetganda dastur to'xtashi kerakligini bilib oladi. 
Rekursiv funksiya tuzishda asos shartni to'g'ri qo'yish juda ham muhim hisoblanadi. Hali bunga 
yana to'xtalamiz. 
Keyingi shartda o'zgartirilgan argument deganda, odatda masala boshidagi argumentdan 
kichikroq argument tushiniladi (ba'zi hollarda kattaroq bo'lishi mumkin). Misolimizda, 
Abdullajon har safar summa() funksiyasiga murojaat qilganda undagi massiv hajmini bittaga 
kamaytirib bordi. Bu narsa ham juda muhim, chunki bir xil argument bilan qayta-qayta murojaat 
qilinganda yoki argument notog'ri o'zgartirilganda funksiya o'zini cheksiz marta chaqirishiga 
to'g'ri kelib qoladi. 
Yana bir qiziq ma'lumot, shunday dasturlash tillari borki ularda umuman takrorlanish operatorlari 
yo'q va bu borada butunlay rekursiyaga tayanadi. Haskell va Erlang shular jumlasidan. 
Albatta, bularning barchasi rekursiyani takrorlash operatorlaridan butunlay ustunligini 
anglatmaydi. Aslida, ko'p hollarda dasturchilar rekursiya ishlatishdan qochishadi. Buning asosiy 
sabablari esa: 

Rekursiya har doim xotiradan qo'shimcha joy talab qiladi. Bu haqida Call stack 
mavzumizda gaplashamiz. 

Rekursiv yechimda xato qilib ehtimoli yuqori. Avval ham aytganimizdek, rekursiya juda 
ham chalg'ituvchi. Shu sababli, uni ishlatishda osongina xato qilib qo'yish mumkin. 



Rekursiv yechimni xatosini topish qiyin. Bunday masalalarda xato qilib qo'yish ehtimoli 
yuqori bo'lishi bilan birga uni topib to'g'irlash ham qiyin bo'lishi mumkin. Buning asosiy 
sababi, bunday yechimlarni tasavvur qilib olish (hayolan debug qilish) juda qiyin. 

Rekursiv algoritmning murakkabligini hisoblash ko'pincha juda murakkab. Hattoki, 
ba'zan to'g'ri yechimni yozishning o'zi ham kam bo'lib qolishi mumkin. Chunki, uni 
iterativ yechim bilan solishtirishda uning murakkabligini hisoblash kerak bo'ladi. 
Rekursiv algoritmlarda bu ko'pincha juda murakkab va yaxshigina matematika talab 
qiladi. 

Download 372.14 Kb.

Do'stlaringiz bilan baham:
1   2   3




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