রিকার্শন হলো যখন একটি ফাংশন নিজেকেই ডাকে একই সমস্যার একটি ছোট সংস্করণ সমাধান করার জন্য, যতক্ষণ না এটি এমন একটি সহজ পরিস্থিতিতে পৌঁছায় যার উত্তর সরাসরি দেওয়া যায়। এটি পুনরাবৃত্তি প্রকাশ করার লুপের চেয়ে ভিন্ন একটি উপায় — কখনো কখনো আরও স্বাভাবিক, বিশেষত এমন সমস্যার জন্য যা নিজের ভাষাতেই সংজ্ঞায়িত।
কোনো সংখ্যার ফ্যাক্টোরিয়াল হলো সেই সংখ্যাকে তার নিচের সংখ্যার ফ্যাক্টোরিয়াল দিয়ে গুণ করা, 1-এ না পৌঁছানো পর্যন্ত। যেমন, 4! = 4 × 3 × 2 × 1 = 24।
function factorial(n) {
if (n <= 1) {
return 1; // বেস কেস — রিকার্শন থামিয়ে দেয়
}
return n * factorial(n - 1); // রিকার্সিভ কেস
}
console.log(factorial(4)); // 24| অংশ | উদ্দেশ্য |
|---|---|
| বেস কেস | সেই সহজ পরিস্থিতি যা সরাসরি একটি উত্তর ফেরত দেয়, আর কোনো রিকার্শন ছাড়াই — এটি না থাকলে ফাংশনটি চিরকাল নিজেকে ডাকতেই থাকবে |
| রিকার্সিভ কেস | সমস্যার একটি ছোট সংস্করণে আবার ফাংশনটিকে ডাকে, বেস কেসের দিকে এগিয়ে যেতে যেতে |
বেস কেস ছাড়া (বা যেটাতে কখনো পৌঁছানো যায় না) একটি রিকার্সিভ ফাংশন "স্ট্যাক ওভারফ্লো" ঘটায় — প্রোগ্রামটি অপেক্ষমাণ সব কলের হিসাব রাখতে গিয়ে মেমরি শেষ করে ফেলে। প্রতিটি রিকার্সিভ ফাংশনেরই কোনো না কোনোভাবে থামার একটি উপায় দরকার।