রিকার্শন (Recursion)
যখন কোনো ফাংশন তার কাজের ভেতরে নিজেকেই বারবার ডাক বা কল দেয়, তখন তাকে রিকার্শন বলা হয়। এটি জটিল কিছু লজিককে খুব ছোট কোডে নিয়ে আসতে সাহায্য করে। তবে মনে রাখবেন, রিকার্শনে সব সময় একটি "থামবার শর্ত" (Base Case) থাকতে হবে, না হলে এটি চলতেই থাকবে।
রিকার্শন অনেকটা আয়নার সামনে দাঁড়ালে যেমন নিজের ভেতরে নিজেকে দেখা যায় তেমনই। এটি মেমোরি বেশি ব্যবহার করে, তাই সাবধানতার সাথে ব্যবহার করা উচিত।
১. রিকার্শন এর বেসিক স্ট্রাকচার
নিচে একটি ফাংশন দেখানো হলো যা ১০ থেকে ১ পর্যন্ত সংখ্যাগুলো উল্টোভাবে প্রিন্ট করবে।
কাজ গুনো(পূর্ণসংখ্যা n) {
যদি n <= ০ {
থাম; // থামবার শর্ত
}
দেখাও n >> " ";
গুনো(n - ১); // নিজেকেই কল করলো
}
গুনো(১০);
২. রিকার্শন কেন ব্যবহার করবেন?
১. কোড ছোট হয়: অনেক বড় লুপের কাজ কয়েক লাইনে করা যায়।
২. জটিল সমস্যা সমাধান: ফ্যাক্টোরিয়াল বা ফিবোনাচি এর মতো সমস্যাগুলো সমাধানে এটি সেরা।
৩. বাস্তব উদাহরণ: ফ্যাক্টোরিয়াল বের করা
৫! (৫ এর ফ্যাক্টোরিয়াল) হলো ৫x৪x৩x২x১ = ১২০। রিকার্শন দিয়ে এটি বের করার নিয়ম:
কাজ ফ্যাক্টোরিয়াল(পূর্ণসংখ্যা n) {
যদি n == ১ {
ফেরত ১;
}
ফেরত n * ফ্যাক্টোরিয়াল(n - ১);
}
দেখাও "৫ এর ফ্যাক্টোরিয়াল: " >> ফ্যাক্টোরিয়াল(৫);
৪. ইন-ডেপথ উদাহরণ: ফিবোনাচি সিরিজ
একটি নির্দিষ্ট সংখ্যার ফিবোনাচি মান বের করা:
কাজ ফিবোনাচি(পূর্ণসংখ্যা n) {
যদি n <= ১ {
ফেরত n;
}
ফেরত ফিবোনাচি(n - ১) + ফিবোনাচি(n - ২);
}
দেখাও "ফিবোনাচি ৬ষ্ঠ মান: " >> ফিবোনাচি(৬);