prologda rekursiya afzalliklari va kamchiliklari

DOCX 12 sahifa 27,5 KB Bepul yuklash

Sahifa ko'rinishi (5 sahifa)

Pastga aylantiring 👇
1 / 12
mavzu: 31. prologda rekursiya qayta ishlashning afzalliklari va kamchiliklari. reja: 1. prologda rekursiya qayta ishlashning afzalliklari. 2. prologda rekursiya kamchiliklari. an'anaviy dasturlash tillaridan farqli o'laroq, tsikllar takrorlanuvchi harakatlarni tashkil qilishning asosiy vositasi bo'lib, prolog buning uchun orqaga qaytish protsedurasi (orqaga qaytarish) va rekursiyadan foydalanadi. orqaga qaytarish dasturga bitta savolda ko'plab yechimlarni olish imkonini beradi, rekursiya esa undan predikatni aniqlash jarayonida foydalanishga imkon beradi. e'tibor bering, rekursiya nafaqat prologda, balki oddiy imperativ dasturlash tillarida ham qo'llaniladi. lekin prolog uchun imperativ tillardan farqli ravishda rekursiya asosiy dasturlash texnikasi hisoblanadi. bundan tashqari, prolog rekursiv ma'lumotlar tuzilmalarini aniqlash imkonini beradi. prologda rekursiyani o'rganishni klassik misoldan boshlaylik. faraz qilaylik, bilimlar bazasida “ota-ona bo‘lish” munosabati orqali odamlarning oilaviy rishtalarini tavsiflovchi faktlar to‘plami mavjud. ota-predikat ikkita argumentga ega. uning birinchi argumenti ota-onaning ismi, ikkinchi dalil esa bolaning ismidir. biz ota-ona predikati yordamida "ajdod bo'l" munosabatini yaratmoqchimiz. bir kishi boshqa shaxsning ajdodi bo'lishi uchun uning ota-onasi bo'lishi yoki …
2 / 12
itivlikni beradi. rekursiya biroz o'xshash bo'lgan matematik induksiyaga o'xshab, har qanday rekursiv protsedura asos va rekursiya bosqichini o'z ichiga olishi kerak. rekursiya asosi - bu ma'lum bir boshlang'ich vaziyatni yoki tugatish paytidagi vaziyatni belgilaydigan gap. qoidaga ko'ra, bu jumlada eng oddiy holat yozilgan bo'lib, unda javob rekursiyadan foydalanmasdan ham darhol olinadi. shunday qilib, ajdod predikatini tavsiflovchi yuqoridagi protsedurada rekursiyaning asosi birinchi qoida bo'lib, unda insonning eng yaqin ajdodlari uning ota-onasi ekanligi aniqlanadi. ushbu jumlada ko'pincha rekursiyaning chiqishi yoki qisqarishiga olib keladigan shart mavjud. rekursiya bosqichi - bu qoida bo'lib, uning tanasida submaqsad sifatida aniqlanayotgan predikatga chaqiruv mavjud. agar biz tsiklni oldini olishni istasak, aniqlanayotgan predikat qoida sarlavhasida ko'rsatilgan parametrlardan chaqirilmasligi kerak. parametrlar har bir bosqichda o'zgartirilishi kerak, natijada yo rekursiya asosi ishlaydi yoki qoidaning o'zida rekursiyadan chiqish sharti ishlaydi. umuman olganda, rekursiya bosqichini amalga oshiradigan qoida quyidagicha ko'rinadi: :- [ ], [ ], [ ], , [ ]. ayrim hollarda …
3 / 12
kursiv matematik tavsifga ega: 1!=1 /* birning faktoriali birga teng */ n!=(n-1)!*n /* qandaydir sonning faktorialini hisoblash uchun, bir kam sonning faktorialini hisoblashingiz kerak va uni asl raqamga ko'paytiring */ keling, matematik ta'rifga ekvivalent bo'lgan predikatning amalga oshirilishini yozishga harakat qilaylik: fakt (1,1). /* birning faktoriali birga teng */ fakt (n, f): - n1 n-1, fakt(n1,f1), /* f1 = birinchi raqamdan kichik faktorial */ f f1*n. /* asl sonning faktoriali f1 ko‘paytmasiga teng */ afsuski, agar siz yuqorida tavsiflangan fakt predikatidan foydalanib ixtiyoriy natural sonning faktorialini hisoblashga harakat qilsangiz, stek to'lib ketishi sodir bo'ladi. keling, sabab nima ekanligini aniqlashga harakat qilaylik. misol uchun, agar biz 3 raqamining faktorialini hisoblashga harakat qilsak, nima bo'lishini ko'rib chiqing. tegishli savol quyidagicha yozilishi mumkin: fakt(3,x). prolog tizimi maqsadni birinchi jumlaning sarlavhasi bilan birlashtirishga harakat qiladi (fakt (1,1)). u muvaffaqiyatga erisha olmaydi, chunki t raqami ri birga teng emas. maqsadni ikkinchi jumlaning sarlavhasi bilan birlashtirishda …
4 / 12
na submaqsad faktini (n1,f1) baholashga harakat qiladi - garchi n1 o'zgaruvchisi qiymati birga teng bo'lsa ham. bu safar maqsad (fact(1,f1)) birinchi jumlaning sarlavhasiga moslashtiriladi, f1 o'zgaruvchisi bitta tomonidan instantsiyalangan. prolog tizimi nihoyat ikkinchi qoidaning ikkinchi pastki maqsadini hisoblashga muvaffaq bo'ldi va u uchinchi kichik maqsadni hisoblashga o'tadi (f=f1*n). n o'zgaruvchisi ikkitaga teng edi, f1 o'zgaruvchisi birga teng edi, ikki va birning ko'paytmasi ikkiga teng edi va shuning uchun f o'zgaruvchisi ikkita bilan belgilanadi. teskari rekursiya boshlanadi. ikki faktorial hisoblangandan so'ng, prolog tizimi uchta faktorialni hisoblashga tayyor. buning uchun ikki faktorialni uchga ko'paytiring. f o'zgaruvchisi olti raqam bilan yaratilgan bo'ladi. biz uchta faktorial haqidagi savolga javob oldik. biroq, hisob-kitoblar shu bilan tugamaydi. prolog tizimi maqsadli fakt(1,f1)ni nafaqat birinchi gap boshiga, balki qoida boshiga ham (fakt(n,f)) mos kelishi mumkinligini aniqlaydi. n o'zgaruvchisi bitta bilan belgilanadi va f1 o'zgaruvchisi f o'zgaruvchisi bilan bog'lanadi. shundan so'ng n1 o'zgaruvchisi n o'zgaruvchining qiymatidan bir kichik raqam, …
5 / 12
a'ni musbat sonlar uchun ishlaydi, deb faraz qilingan. ammo bizning dasturimizda butun sonlarning manfiy qismiga chiqish sodir bo'ldi, bu bizning protseduramiz asos qilib olingan formulada ko'zda tutilmagan. xatoni qanday tuzatish mumkin? jarayonni sozlash uchun bizda ikkita variant mavjud. birinchi variant. qoida amal qiladigan raqam bittadan katta ekanligini tekshirishingiz mumkin. birlik uchun, birlik omili birlik bo'lishi haqiqatda qoladi. ushbu parametr quyidagicha ko'rinadi: fakt (1,1). /* birning faktoriali birga teng */ fakt (n, f): - n>1, /* raqam birdan katta ekanligiga ishonch hosil qiling */ n1 n-1, fakt(n1,f1), /* f1 = birinchi raqamdan kichik faktorial */ f f1*n. /* asl sonning faktoriali = f1 va raqamning ko'paytmasi */ bunday holda, fakt(1,f1) maqsadi qoida sarlavhasi bilan mos kelishi va n o'zgaruvchisi bitta tomonidan instantsiyalangan bo'lsa-da va f o'zgaruvchisi f1 o'zgaruvchisi bilan bog'langan bo'lsa-da, qoidaning birinchi pastki maqsadi (n>). 1) yolg'on bo'ladi. bu jarayonni tugatadi. ijobiy bo'lmagan raqamlar bo'yicha faktorialni hisoblashga urinish bo'lmaydi, protsedura …

Ko'proq o'qimoqchimisiz?

Barcha 12 sahifani Telegram orqali bepul yuklab oling.

To'liq faylni yuklab olish

"prologda rekursiya afzalliklari va kamchiliklari" haqida

mavzu: 31. prologda rekursiya qayta ishlashning afzalliklari va kamchiliklari. reja: 1. prologda rekursiya qayta ishlashning afzalliklari. 2. prologda rekursiya kamchiliklari. an'anaviy dasturlash tillaridan farqli o'laroq, tsikllar takrorlanuvchi harakatlarni tashkil qilishning asosiy vositasi bo'lib, prolog buning uchun orqaga qaytish protsedurasi (orqaga qaytarish) va rekursiyadan foydalanadi. orqaga qaytarish dasturga bitta savolda ko'plab yechimlarni olish imkonini beradi, rekursiya esa undan predikatni aniqlash jarayonida foydalanishga imkon beradi. e'tibor bering, rekursiya nafaqat prologda, balki oddiy imperativ dasturlash tillarida ham qo'llaniladi. lekin prolog uchun imperativ tillardan farqli ravishda rekursiya asosiy dasturlash texnikasi hisoblanadi. bundan tashqari, prolog rek...

Bu fayl DOCX formatida 12 sahifadan iborat (27,5 KB). "prologda rekursiya afzalliklari va kamchiliklari"ni yuklab olish uchun chap tomondagi Telegram tugmasini bosing.

Teglar: prologda rekursiya afzalliklari… DOCX 12 sahifa Bepul yuklash Telegram