Rekursiv usulni iterativ usuldan avfzalliklari
Bu haqida ham birinchi darsda to’xtalgan ekanmiz, shuning uchun ularni shunchaki qaytarish kifoya deb hisobladim:
Ba’zi holatlarda rekursiv yechim ancha soddaroq. Ayniqsa, 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, QuickSort, MergeSort, … Bu ro’yhatni juda uzoq davom ettirish mumkin. Ayniqsa, murakkab tuzilmalar bo’lgan Tree va Graphlarda rekursiya har qadamda uchraydi. Dasturchilikni esa ularsiz tasavvur qilib bo’lmaydi, bu esa o’z o’rnida rekursiya qanchalik muhimligini belgilab beradi.
TOPSHIRIQ
2. Berilgan a va b sonlarining EKUKini topuvchi rekursiv funksiya tuzing.
#include
using namespace std;
long EKUK(long a, long b) {
if (b != 0) {
long long c = a % b;
a = b;
b = c;
return EKUK(a, b);
}
}
int main()
{
int a,b;
cout << "A="; cin>>a;
cout << "B="; cin>>b;
cout << "EKUK(" << a << ";" << b << ")=" << a*b*1./EKUK(a,b) << endl;
return 0;
}
5-tajriba ishi. STL komponentalar va konteynerlar bilan tanishish. Shablonlar standart kutibxonasining tuzilmasi.
Ishdan maqsad: STL bilan tanishish va konteynerlar yaratish hamda ularni tadqiq qilish. Yarimstatik Ma’lumotlar tuzilmalari ustida amal bajarish algoritmlarini o’rganish.
Qo’yilgan masala: C++ tilida STL bilan tanishish va konteynerlar yaratish va topshiriq variantiga ko„ra uning ustida amal bajarish dasturini ishlab chiqish.
Ish tartibi:
Tajriba ishi nazariy Ma’lumotlarini o’rganish;
Berilgan topshiriqning algoritmini ishlab chiqish;
C++ dasturlash muhitida dasturni yaratish;
Natijalarni tekshirish;
Hisobotni tayyorlash va topshirish.
C++ dasturlash tilida STL bilan tanishish
Umumlashgan yoki unifikasiyalangan dasturlashning maqsadi tartiblash kabi ko‘p qo‘llaniluvchi algoritmlar va sinflar saqlanuvchi universal kutubxonalar yaratish orqali dasturlash jarayonini avtomatlashtirishdan iboratdir. Shu bilan birga, bu kutubxonaga kiruvchi funksiyalar universal xarakterga ega bo‘lishi, ya’ni ixtiyoriy turdagi ma’lumotlar ustida amallar bajarish imkonini berishi lozim.
Shablonlarga asoslangan umumlashgan dasturlashga misol Stepanov
va Target tomonidan yaratilgan va C++ tili standartiga kiritilgan STL (Standart Template Library) kutubxonasidir.
Biblioteka yadrosi uchta elementdan iborat: konteynerlar, algoritmlar va iteratorlar.
Do'stlaringiz bilan baham: |