Rekursiya va rekursiv funksiyalarga oid algoritmlar.
Rekursiya va rekursiv funksiyalarga oid algoritmlar. Reja : I.Kirish . II.Rekursiv algoritm va funksiyalar. 1.Rekursiv algoritmlar va ularning tahlili 2.Rekursiya. Nima uchun u kerak? III.Xulosa. IV.Foydalanilgan adabiyotlar.
KIRISH Rekursiya Rekursiya — Funksiya o ziga o zi to g ridan-to g ri yoki qandaydir vosita orqali ʻ ʻ ʻ ʻ ʻ ʻ murojaat qilish jarayoniga rekursiya deyiladi va bunday funksiya rekursiv funksiya deb ataladi[1]. Rekursiv funksiya o zini — o zi chaqirgani uchun dasturchilar ʻ ʻ orasida quyi oldin rekursiya nimagligini tushunish kerak“ — Stephen Hawking[2]. Rekursiya funksional dasturlashning asosiy elementlaridan hisoblanadi. Rekursiya deyarli hamma joyda ishlatiladi. Ba zi masalalarning iterativ yechimi juda ham ʼ uzun bo lib ketishi mumkin. Rekursiya esa kodni bir necha barobar qisqartirib ʻ berishi mumkin. Aksariyat tuzilmalar va algoritmlarni rekursiyasiz tasavvur qilib bo lmaydi ʻ Tree, Graph, Heap, Quick Sort, Merge Sort Bu ro'yhatni juda uzoq davom ettirish mumkin. Ayniqsa, murakkab tuzilmalar bo lgan Tree va Graphlarda rekursiya har qadamda uchraydi. ʻ Rekursiya har doim xotiradan qo shimcha joy talab qiladi. ʻ Rekursiv yechimda xato qilish ehtimoli yuqori, chunki rekursiya juda ham chalg ituvchi. ʻ Rekursiv yechimni xatosini topish qiyin. Murakkab algoritmni hisoblash qiyin Algoritmi Qutilar ichma-ich ixtiyoriy joylashtirilgan, qaysidir quti ichida kalit bor. Siz kalitni topish algoritmini tuzishingiz kerak Rekursiyaga qo yish uchun ushbu ikki shartni yozib olamiz ʻ Ishlash sharti: Quti ichida ichki quti chiqsa, uni ochib ko r. Agar ichki qutidan kalit ʻ chiqmasa tashqi qutining kelgan joyidan davom et. To xtash sharti: Quti ichidan kalit topilsa to xta. ʻ ʻ Dasturi
Fibonachchi ketma ketligining n — hadini rekursiya qism dastur orqali hisoblovchi dastur #include <iostream.h> int fib(int); int main() { int n; cout << "n="; cin >> n; cout << fib(n) << endl; return 0; } int fib(int k) { if (k == 0 || k == 1) return 1; else return fib(k - 1) + fib(k - 2); } Rekursiyaga oid dastur #include <bits/stdc++.h> using namespace std; void tower(int n, char sourcePole, char destinationPole, char auxiliaryPole) { if(0 == n) return; tower(n - 1, sourcePole, auxiliaryPole, destinationPole); cout << "Diskni ko'chiring "<< n << " dan " << sourcePole <<" ga "<< destinationPole << endl; tower(n - 1, auxiliaryPole, destinationPole,
sourcePole); } int main() { tower(3, 'S', 'D', 'A'); return 0; } Rekursiv funksiyaning to xtash chegarasi bo lmasa, amallar cheksiz bajarilaveradi,ʻ ʻ oqibatda dastur xatolik keltirib chiqaradi. II.Rekursiv algoritm va funksiyalar.