Recursion කියන්නේ ප්රෝග්රැමරුවන් අතර “ඔබම ඔබට අමතන්න” කියන විශේෂ ක්රමයකි. සරල වචන වලින් කියනවා නම්, එක් function එකක් තමම තමන්ම නැවත අමතන තුරු, නියමිත තත්වයක් (base case) පුරවා නොගතහොත්, එය දිගටම ක්රියා කරයි.
උදාහරණයක් ලෙස, C++ භාෂාවේ ලියන ලද පහත කේතය බලමු. int count = 0; යන ගොනු පළමුව සකස් කර, f() function එක තුළ if (count == 3) { return; } ලෙස base case එකක් සකස් කර ඇත. count 3 වෙද්දි function එක ආපසු යයි, එවිට recursion අවසන් වේ. count 0 සිට 1, 2 දක්වා ඉහළ යන තුරු, function එකම තමන්ම අමතමින් ප්රතිඵලය 0, 1, 2 ලෙස මුද්රණය කරයි.
මෙම ක්රියාවලිය පසුපස ඇති call stack මත පදනම් වේ. function එකක් අමතන වරක්, memory එකේ නව “stack frame” එකක් සෑදේ. අපේ උදාහරණයේ f() අමතන විට, count 0, 1, 2, 3 යන අගයන් සමඟ එක් එක් frame එකක් එකතු වේ. base case ළඟා වූ විට, අතිරේක frame එකෙන් පසු, පසුගිය frame ගණනාවක් එකිනෙකට ආපසු “pop” වෙයි. මෙය LIFO (Last In First Out) ක්රමයයි. Stack එක අතිශය ගැඹුරු වීමෙන් “stack overflow” යන දෝෂයක් සිදුවිය හැක, ඒ නිසා base case එක නිවැරදිව නිර්වචනය කිරීම අත්යවශ්යය.
ශ්රී ලංකාවට ඇති වැදගත්කම
Recursion පදනම තේරුම් ගැනීම ශ්රී ලංකාවේ නවක පරීක්ෂක, විශ්වවිද්යාල සිසුන්, සහ තාක්ෂණික ව්යාපාර සඳහා කිහිපයක් වශයෙන් ප්රයෝජනවත් වේ:
- අධ්යාපනය: Algorithms පාඨමාලාවේ ගැඹුරු විෂයයන් (binary search, quicksort) Recursion මත පදනම් වේ. එය ඉගෙන ගැනීමෙන් සිසුන්ට ලොජික් සහ ගණිතමය සිතීම වැඩි වේ.
- සොෆ්ට්වෙයා සංවර්ධනය: Recursive functions භාවිතා කරමින් කේතය කෙටි, පැහැදිලි, නඩත්තු කළ හැකි බවට පත්වේ. ඒ නිසා දේශීය start‑up ගණනාවක් තම නිෂ්පාදන කේත ගුණාත්මකභාවය වැඩි දියුණු කර ගත හැක.
- ව්යාපාරික පද්ධති: Data structures (trees, graphs) වල සැකසීම, AI මොඩල් වල ගැඹුරු පරීක්ෂණ, cloud services වල function‑as‑a‑service (FaaS) ආදී වශයෙන් Recursion අවශ්ය වේ. මෙයින් ශ්රී ලංකාවේ IT සේවා වෙළඳපොළට නව අවස්ථා ලැබේ.
අවසානයේ, Recursion එකේ base case, call stack, LIFO, සහ stack overflow යන මූලික සංකල්ප හඳුනා ගැනීම, ඔබේ කේත නිර්මාණය ආරක්ෂිතව, කාර්යක්ෂමව, හා පරිසරයට හිතකරව තබා ගැනීමට මූලික වේ.
ඔබේ පළපුරුදු කේතයන්ට Recursion එක එක්කර, තවත් නව නිර්මාණයක් ගොඩනගා බලන්න.