Rekursiv hikoya

Rekursiv hikoya

"Rekursiya nimaligini tushunish uchun oldin rekursiya nimagligini tushunish kerak" — Stephen Hawking

Rekursiya — bu dasturlashning eng chalg'ituvchi bo'limlaridan, shuning uchun ham uni tushunishga va undan to'g'ri foydalanishga ko'pchilik qiynalishi aniq. Lekin, rekursiya dasturlashning eng murakkab masalalarining asosi hisoblanadi, shuning uchun ham uni yaxshi tushunish va to'g'ri ishlata olish juda ham muhim.

Rekursiya nimaligini tasavvur qilish uchun, oddiy hikoya tarzida misol keltirmoqchiman.

Kichik hikoya…

Abdullajon, yosh va qobiliyatli dasturchi. Bir kuni uning ustozi unga bir oddiy masala berdi. Butun sonlardan iborat massiv elementlari yig'indisini topish. Lekin, bitta shart buni takrorlanish operatorlaridan foydalanmagan holda amalga oshirish kerak.


Abdullajonni bu masala juda o'ylantirib qo'ydi, chunki u qanday qilib takrorlanishlarsiz buni qilishni bilmasdi. U 3 kun o'ylagandan so'ng quyidagi fikr hayoliga keldi.

Abdullajonda [10, 20, 30, 40] massiv bor va u qo'shish amalini bemalol ishlatishi mumkin.

Abdullajon o'yladi, agar masalani quyidagi ko'rinishda yozsa ham uning natijasi o'zgarmaydi 10 + [20, 30, 40]. Bunda unga o'ng tarafdagi massiv yig'indisi kerak bo'ladi.

[20, 30, 40] massiv yig'indisi 20 + [30, 40] bilan bir xil. Huddi shunday ishni [30, 40] massiv bilan ham qilish mumkin, ya'ni uning yig'indisi 30 + [40] ga teng.

[40] massivda esa bittagina element bor uning yig'indisi esa tabiiyki o'sha element o'ziga teng.

Demak, Abdullajon [40] massiv elementlari yig'indisi 40 ga teng ekanligini biladi. Bu bilan u 30 + [40] ni 70 ekanligini, buni bilgan holda esa 20 + [30, 40] = 20 + 70 = 90 ekanligini va shunday qilib yakunda natija 100 ekanligini topishi mumkinligini bildi.

Abdullajon, ustoziga o'z yechimini ko'rsatganda ustozi uni Rekursiya nima ekanligini tushunib yetgani bilan tabrikladi.

Rekursiyaning rasmiy ta'rifi va uni o'rganish nima uchun muhimligi haqida keyingi darsda gaplashamiz.

Maqolani foydali deb hisoblasangiz uni do'stlaringizga ham ulashing!

Manba:


JONNY - Texnoman foydalanuvchisi

Muallif haqida

JONNY Arduino, Java, C#, Android, Windows, Linux, Debian, Javascript. O'zbekistonni rivojlantiramiz! Dasturlash orqali vatanimizni yangi marralarga olib chiqamiz.


Blogdagi so‘nggi maqolalar:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!