C++ rekursiya


ULASHISH

Rekursiya

Rekursiya — funksiyaning o‘zini o‘zi chaqirish usuli.

Bu usul murakkab masalalarni hal qilish osonroq bo‘lgan oddiy masalalarga ajratish imkonini beradi.

Rekursiyani tushunish biroz qiyin bo‘lishi mumkin. Uning qanday ishlashini anglashning eng yaxshi yo‘li — u bilan tajriba o‘tkazish.


Rekursiya misoli

Ikki sonni qo‘shish oson, ammo sonlar oralig‘ini qo‘shish murakkabroq.

Quyidagi misolda sonlar oralig‘ini qo‘shish uchun rekursiyadan foydalaniladi: vazifa ikki sonni qo‘shishdan iborat oddiy amalga ajratiladi:

Misol

int sum(int k) {   if (k > 0) {     return k + sum(k - 1);   } else {     return 0;   } } int main() {   int result = sum(10);   cout << result;   return 0; }
O‘zingiz sinab ko‘ring »

Misol izohi

sum() funksiyasi chaqirilganda, u k parametrini k qiymatidan kichik barcha sonlar yig‘indisiga qo‘shadi va natijani qaytaradi. k 0 ga teng bo‘lganda funksiya shunchaki 0 qaytaradi. Dastur ishga tushganda quyidagi qadamlarni bajaradi:

10 + sum(9)
10 + ( 9 + sum(8) )
10 + ( 9 + ( 8 + sum(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

k 0 ga teng bo‘lganda funksiya o‘zini chaqirmagani uchun dastur shu yerda to‘xtaydi va natijani qaytaradi.

Dasturchi rekursiya bilan juda ehtiyot bo‘lishi kerak, chunki hech qachon tugamaydigan yoki haddan tashqari ko‘p xotira yoxud protsessor quvvatini sarflaydigan funksiyani yozib qo‘yish juda oson.

Biroq to‘g‘ri yozilganda rekursiya dasturlashda juda samarali va matematik jihatdan nafis yondashuv bo‘lishi mumkin.


Teskari sanash

Bu misol teskari sanoq funksiyasini yaratish uchun rekursiyadan qanday foydalanishni ko‘rsatadi:

Misol

void countdown(int n) {   if (n > 0) {     cout << n << " ";     countdown(n - 1);   } } int main() {   countdown(5); }
O‘zingiz sinab ko‘ring »

Funksiya n qiymati 0 bo‘lguncha o‘zini n - 1 argumenti bilan chaqiradi.



Sonning faktoriali

Bu misolda 5 ning faktorialini hisoblash uchun rekursiv funksiyadan foydalaniladi:

int factorial(int n) {   if (n > 1) {     return n * factorial(n - 1);   } else {     return 1;   } } int main() {   cout << "Factorial of 5 is " << factorial(5);   return 0; }
O‘zingiz sinab ko‘ring »

Faktorial — sonni o‘zidan kichik barcha sonlarga 1 gacha ko‘paytirish demakdir (masalan, 5 ning faktoriali: 5 * 4 * 3 * 2 * 1 = 120).




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!