rekursiya. o’z – o’zini chaqiruvchi funksiyalar

DOCX 16 стр. 800,5 КБ Бесплатная загрузка

Предварительный просмотр (5 стр.)

Прокрутите вниз 👇
1 / 16
o’zbekiston respublikasi oliy va o’rta maxsus ta’lim vazirligi termiz davlat universiteti axborot texnologilari fakulteti amaliy matematika va informatika ta’lim yo’nalishi _ – kurs ___ – guruh talabasi ________________________________ning rekursiya. o’z – o’zini chaqiruvchi funksiyalar mavzusidagi mustaqil ishi mavzu: rekursiya. o’z – o’zini chaqiruvchi funksiyalar reja: 1. rekursiya haqida tushuncha 2. quyruq rekursiyasi va bosh rekursiyasi 3. rekursiya va takrorlash xulosa foydalanilgan adabiyotlar rekursiya haqida tushuncha ta'rif. java-da funktsiyani chaqirish mexanizmi qo'llab-quvvatlaydiusulning o'zini chaqirish qobiliyati.ushbu funktsiya sifatida tanilganrekursiya. masalan, biz 0 dan ba'zi bir qiymatgacha bo'lgan butun sonlarni yig'moqchimiz deylikn: public int sum(int n) { if (n >= 1) { return sum(n - 1) + n; } return n; } rekursiv funksiya uchun ikkita asosiy talab mavjud: · to'xtatish холати- funktsiya ma'lum bir shart bajarilganda, boshqa rekursiv chaqiruvsiz qiymatni qaytaradi · rekursiv qo'ng'iroq- funksiya o'zini bilan chaqiradikiritish, bu to'xtash holatiga bir qadam yaqinroqdir har bir rekursiv qo'ng'iroq jvm stek xotirasiga yangi …
2 / 16
usuldagi joriy pozitsiya misol quyidagi sinf berilgan chuqurlikdagi daraxt strukturasini rekursiv chop etish imkonini beradi. public class node { public int data; public node left; public node right; public node(int data) { this(data, null, null); } public node(int data, node left, node right) { this.data = data; this.left = left; this.right = right; } public void print(final int maxdepth) { if (maxdepth stack = new arraylist<>(); stack.add(new frame(n, 2)); // first frame = initial call while (!stack.isempty()) { // get topmost stack element int index = stack.size() - 1; frame frame = stack.get(index); // get topmost frame if (frame.maxdepth <= 0) { // termial case (too deep) system.out.print("(...)"); stack.remove(index); // drop frame } else { switch (frame.state) { case 0: frame.state++; // do everything done before the first recursive call system.out.print("("); if (frame.node.left != null) { // add new frame (recursive call to left and stop) stack.add(new frame(frame.node.left, frame.maxdepth - …
3 / 16
ilsum(currentsum + n, n - 1); } quyruq rekursiyasi bilanrekursiv qo'ng'iroq - bu usulning oxirgi ishidir, shuning uchun joriy funktsiyada bajariladigan hech narsa qolmaydi. shunday qilib, mantiqiy ravishda joriy funktsiyaning stek ramkasini saqlashga hojat yo'q. kompilyator bo'lsa-daбалкиxotirani optimallashtirish uchun ushbu momentdan foydalanish uchun shuni ta'kidlash kerakjava kompilyatori hali quyruq rekursiyasini optimallashtirmaydi. rekursiv usulni loyihalashda sizga kerakligini yodda tuting: · asosiy variant. bu sizning rekursiyangiz qachon to'xtashini va natijani chiqarishini aniqlaydi. faktorial misoldagi asosiy holat: · if (n <= 1) { · return 1; · } · rekursiv qo'ng'iroq. ushbu bayonotda siz o'zgartirilgan parametr bilan usulni qayta chaqirasiz. yuqoridagi faktoriy misolda rekursiv chaqiruv: · else { · return n * factorial(n - 1); · } chiqish ushbu misolda siz n-chi omil raqamini hisoblayapsiz. birinchi faktoriallar: 0! = 1 1! = 1 2! = 1 x 2 = 2 3! = 1 x 2 x 3 = 6 to'rtta! = 1 x …
4 / 16
kat qilishi kerak. demak, rekursiv funksiya muammoni kichikroq va kichikroq qismlarga ajratadi. muammoni cheklangan deb hisoblasak, bu rekursiyaning tugashini ta'minlaydi. java uchinchi shartga ega: muammoni hal qilish haqida juda chuqur o'ylamang; qarang java'da chuqur rekursiya muammoli misol quyidagi funksiya rekursiya yordamida faktoriallarni hisoblaydi. usul factorialo'zini funktsiya ichida qanday chaqirayotganiga e'tibor bering. har safar o'zini chaqirganda, u parametrni 1 ga kamaytiradi. 1 ga (asosiy holat) yetganda, funktsiya chuqurlashmaydi. public int factorial(int n) { if (n <= 1) { // the base condition return 1; } else { return n * factorial(n - 1); } } bu java-da faktoriallarni hisoblashning amaliy usuli emas, chunki u ning katta qiymatlarida butun sonlar yoki qo'ng'iroqlar stekining oshib ketishi (masalan, istisnolar) hisobga olinmaydi rekursiya va takrorlash rekursiya kodni tushunarli va o'qilishi mumkin bo'lgan ba'zi murakkab vazifalarni bajarishni soddalashtirishga yordam beradi. ammo biz ko'rib turganimizdek, rekursiv yondashuv ko'pincha ko'proq xotirani talab qiladi, chunki kerakli stek xotirasi har …
5 / 16
rekursiv tarzda o'ylab, biz birinchi navbatda hisoblashimiz mumkin(n-1)10 ning kuchi va natijani 10 ga ko'paytiring. keyin hisoblash uchun(n-1)10 ning kuchi bo'ladi(n-2)10 ning th darajasi va natijani 10 ga ko'paytiring va hokazo.biz 10 ning (nn)-chi kuchini hisoblashimiz kerak bo'lgan nuqtaga yetguncha shunday davom etamiz. agar biz buni java-da amalga oshirmoqchi bo'lsak, biz yozamiz: public int powerof10(int n) { if (n == 0) { return 1; } return powerof10(n-1) * 10; } фибоначчи кетма-кетлигининг n-элементини топиш bilan boshlanadi0va1,ketma-ketlik фибоначчи raqamlar ketma-ketligi bo'lib, bu erda har bir raqam o'zidan keyingi ikkita raqamning yig'indisi sifatida aniqlanadi:0 1 1 2 3 5 8 13 21 34 55… shunday qilib, raqam berilgann, bizning vazifamiz topishdirn- элементфибоначчи кетма-кетлиги. rekursiv yechimni amalga oshirish uchun biz bilib olishimiz kerak to'xtatish холати va rekursiv chaqiruv. yaxshiyamki, bu juda oson. qo'ng'iroq qilaylikf(n) n-ketma-ketlikning qiymati.keyin bizda bo'ladif(n) = f(n-1) + f(n-2) (rekursiv chaqiruv). keyin muammoni hal qilishning rekursiv usulini aniqlash biz uchun …

Хотите читать дальше?

Скачайте все 16 страниц бесплатно через Telegram.

Скачать полный файл

О "rekursiya. o’z – o’zini chaqiruvchi funksiyalar"

o’zbekiston respublikasi oliy va o’rta maxsus ta’lim vazirligi termiz davlat universiteti axborot texnologilari fakulteti amaliy matematika va informatika ta’lim yo’nalishi _ – kurs ___ – guruh talabasi ________________________________ning rekursiya. o’z – o’zini chaqiruvchi funksiyalar mavzusidagi mustaqil ishi mavzu: rekursiya. o’z – o’zini chaqiruvchi funksiyalar reja: 1. rekursiya haqida tushuncha 2. quyruq rekursiyasi va bosh rekursiyasi 3. rekursiya va takrorlash xulosa foydalanilgan adabiyotlar rekursiya haqida tushuncha ta'rif. java-da funktsiyani chaqirish mexanizmi qo'llab-quvvatlaydiusulning o'zini chaqirish qobiliyati.ushbu funktsiya sifatida tanilganrekursiya. masalan, biz 0 dan ba'zi bir qiymatgacha bo'lgan butun sonlarni yig'moqchimiz deylikn: public int sum(int n) { if (n >...

Этот файл содержит 16 стр. в формате DOCX (800,5 КБ). Чтобы скачать "rekursiya. o’z – o’zini chaqiruvchi funksiyalar", нажмите кнопку Telegram слева.

Теги: rekursiya. o’z – o’zini chaqiru… DOCX 16 стр. Бесплатная загрузка Telegram