Recursion
Last updated
Last updated
Aytaylik, siz buvingizning chodirini qazib o'tiryapsiz va sirli qulflangan chamadonga duch keldingiz.
Buvim sizga chamadonning kaliti shu boshqa qutida bo'lishi mumkinligini aytadi.
Ushbu qutida ko'proq qutilar mavjud, ular ichida ko'proq qutilar mavjud. Kalit qayerdadir qutida. Kalitni qidirish algoritmingiz qanday? O'qishni davom ettirishdan oldin algoritm haqida o'ylab ko'ring.
Mana bitta yondashuv
Ko'rish uchun qutilar to'plamini yarating.
Bir qutini oling va uni ko'rib chiqing.
Agar quti topsangiz, keyinroq ko'rib chiqish uchun uni qoziqqa qo'shing.
Agar kalit topsangiz, ish tugadi!
Takrorlang.
Mana muqobil yondashuv.
Qutini ko'rib chiqing.
Agar quti topsangiz, 1-bosqichga o'ting.
Agar kalit topsangiz, ish tugadi!
Qaysi yondashuv sizga osonroq tuyuladi? Birinchi yondashuv while
tsiklidan foydalanadi. Qoziq bo'sh bo'lmasa-da, qutini oling va uni ko'rib chiqing:
Ikkinchi usul rekursiyadan foydalanadi. Rekursiya - funksiya o'zini chaqiradigan joy. Mana psevdokodning ikkinchi usuli:
Ikkala yondashuv ham bir xil narsani amalga oshiradi, ammo ikkinchi yondashuv men uchun aniqroq. Rekursiya yechimni aniqroq qilganda ishlatiladi. Rekursiyadan foydalanishning unumdorligi yo'q; aslida, looplar ba'zan ishlash uchun yaxshiroqdir. Menga Ley Kolduellning Stack Overflow haqidagi ushbu iqtiboslari yoqadi: "Looplar dasturingiz uchun unumdorlikni oshirishi mumkin. Rekursiya dasturchingiz uchun unumdorlikka erishishi mumkin. Vaziyatingizda qaysi biri muhimroq ekanini tanlang!" 1
Ko'pgina muhim algoritmlar rekursiyadan foydalanadi, shuning uchun kontseptsiyani tushunish muhimdir.
1* link