রিকারশন কী এবং কিভাবে কাজ করে

রিকারশন এবং রিকারেন্স রিলেশন (Recursion and Recurrence Relations) - ডিসক্রিট ম্যাথমেটিক্স (Discrete Mathematics) - Computer Science

313

রিকারশন হলো প্রোগ্রামিংয়ের একটি পদ্ধতি, যেখানে একটি ফাংশন নিজেই নিজেকে ডাকে এবং ধাপে ধাপে সমস্যার সমাধান করে। এই প্রক্রিয়াটির মূল লক্ষ্য একটি জটিল সমস্যাকে সরল উপায়ে সমাধান করা। প্রতিবার ফাংশনটি নিজেকে ডাকার সময় সমস্যার আকার ছোট হতে থাকে, এবং অবশেষে একটি নির্দিষ্ট শর্তে পৌঁছালে (যাকে বেস কেস বলা হয়) ফাংশনটি পুনরাবৃত্তি থামিয়ে সমাধান প্রদান করে।


রিকারশনের কাজের প্রক্রিয়া

রিকারশনের কাজের মূলত দুটি অংশ রয়েছে:

  1. বেস কেস (Base Case): এটি এমন একটি শর্ত, যেখানে ফাংশনটি পুনরাবৃত্তি বন্ধ করে এবং সরাসরি একটি সমাধান প্রদান করে। বেস কেস ছাড়া রিকারশন চলতেই থাকবে, যা একটি অনন্ত লুপ তৈরি করতে পারে।
  2. রিকারসিভ কেস (Recursive Case): এখানে ফাংশনটি নিজেকে ডাকে এবং ধীরে ধীরে সমস্যাকে ছোট আকারে বিভক্ত করে। রিকারসিভ কেসের মাধ্যমে সমস্যা সমাধানের জন্য ফাংশনটি প্রতিবার তার বর্তমান সমস্যার একটি অংশ সমাধান করে।

উদাহরণ: ফ্যাক্টরিয়াল গণনা

ধরি, আমাদের \( n \) সংখ্যার ফ্যাক্টরিয়াল (\( n! \)) বের করতে হবে, যেখানে:

\[
n! = n \times (n-1) \times (n-2) \times \dots \times 1
\]

এটি রিকারশন দিয়ে করা যায়। এখানে বেস কেস এবং রিকারসিভ কেস কীভাবে কাজ করে তা ব্যাখ্যা করা হলো।

ধাপসমূহ:

  1. বেস কেস: যখন \( n = 0 \) বা \( n = 1 \), তখন \( n! = 1 \)।
  2. রিকারসিভ কেস: যদি \( n > 1 \) হয়, তাহলে \( n! = n \times (n-1)! \)।

উদাহরণ কোড:

def factorial(n):
    if n == 0 or n == 1:  # বেস কেস
        return 1
    else:
        return n * factorial(n - 1)  # রিকারসিভ কেস

কাজের ধারা:

  • যদি \( n = 5 \) হয়, তাহলে factorial(5) কল হবে।
  • এটি \( 5 \times factorial(4) \) কল করবে।
  • factorial(4) কল হবে এবং \( 4 \times factorial(3) \) এ রূপান্তরিত হবে।
  • এভাবে প্রতিবার \( n-1 \) দিয়ে ফাংশন কল হতে থাকবে যতক্ষণ না \( n = 1 \) এ পৌঁছে, যেখানে ফাংশনটি ১ প্রদান করবে।

এভাবে রিকারশন ফাংশনটি ধাপে ধাপে কাজ করে ফলাফল দেয়।


রিকারশনের সুবিধা ও অসুবিধা

সুবিধা:

  • জটিল সমস্যাগুলোকে সহজে সমাধান করা যায়।
  • কোড পড়তে ও বুঝতে সহজ হয়।

অসুবিধা:

  • অতিরিক্ত মেমরি ব্যবহার হয়, কারণ প্রতিটি রিকারসিভ কল স্ট্যাক মেমরি দখল করে।
  • যদি বেস কেস না থাকে, তাহলে এটি ইনফাইনাইট রিকারশন ঘটিয়ে স্ট্যাক ওভারফ্লো ঘটাতে পারে।

রিকারশন ছোট ও জটিল সমস্যার ক্ষেত্রে অত্যন্ত কার্যকর, তবে এটি ব্যবহারের সময় বেস কেস এবং রিকারসিভ কেস সঠিকভাবে নির্ধারণ করতে হয়।

Content added By
Promotion

Are you sure to start over?

Loading...