if (test < 1)
return;
else
{
cout << test << " ";
printFun(test-1);
cout << test << " ";
return;
}
}
int main()
{
int test = 3;
printFun(test);
}
Quyidagi Rasmda e'tibor bering printFun funksiyasi 3 argumenti bilan chaqirilganda to 1 ga bormagunga qadar 3, 2, bilan chaqirilgan funksiyalar kutib turibdi. Va nihoyat 1 bilan chaqirilgan element yopilgach, teskari ketma-ketlikda 2, 3 bilan chaqirilgan funksiyalar ham yopildi.
NATIJA:
3 2 1 1 2 3
Rekursiv ta'riflar ikki qismdan iborat. Birinchi qismida, to'plamning asos qilib olingan elementlari joylashtiriladi.Ikkinchi qismida, asos qilib olingan yoki avval foydalanilgan elementlardan foydalanilmagan holda yangi obyektlar yaratish uchun qoidalar beriladi.Bu qoidalarga yangi obyektlarni yaratishda qayta-qayta murojaat etiladi. Misol uchun, natural sonlar to'plamini yaratish uchun, bir asos element, 0, bir tomonlama, va 1 bo'yicha inkrementlash jarayoni quyidagicha beriladi:
Arab raqamlaridan tashkil topgan ma'lum chegarali miqdorlardan foydalanaib izoh keltirish qulayroq:
1. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ∈ N;
2. agar n ∈ N bo'lsa, so'ng n0, n1, n2, n3, n4, n5, n6, n7, n8, n9 ∈ N;
3. bular natural sonlar hisoblanadi.
Demak, N asos qilib olingan 0 dan 9 gacha bo'lgan sonlardan tuzilgan kombinatsiyalardan tuzilgan sonlarni ham o'z ichiga qamrab olar ekan. Rekursiv ta'riflar ikki xil maqsadda xizmat qiladi: yuqorida qayd etilganidek, yangi elementlar yaratish va tanlangan elemeent shu to'plamga tegishli yoki tegishli emasligini testlab berish. Testlash jarayonida buni hal qilish murakkab bo'ladigan bo'lsa, u son soddaroq ko'rinishga kelmaguncha soddalashtirilib boriladi. Misol uchun, 123 natural sonmi? N to'plamni izohlovchi ta'rifdagi ikkinchi holatga asosan 123 ∈ N bo'ladi, agar 12∈ N va birinchi holatga asosan 3 ∈ N bo'lganda, 12 ∈ N bo'ladi, agar 1 ∈ N va 2 ∈ N bo'lgandava ikkalasi ham Nga tegishli bo'ladi. Berilgan misoldagidek sonni murakkab ko'rinishdan soddaroq ko'rinishga o'tkaza olish ahamiyatli, shu kabi 9.3.3 qismda ko'rib o'tadigan tez saralash usulidan foydalanish samarali. Rekursiv ta'riflar asosan raqamlar ketma-ketligi va funksiyalarni aniqlashda foydalaniladi. Misol uchun, faktorial funksiya ! quyidagi yo'sinda aniqlanishi mumkin.
Bu ta'rifdan foydalanib, biz1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, . . . sonlarini 0, 1, 2, . . . , 10, . . . raqamlarinining faktoriallarini o'z ichiga oluvchi ketma-ketlikni hozil qilishimiz mumkin.
|
Do'stlaringiz bilan baham: |