কম্পিউটার টিউটোরিয়াল

ডেটা স্ট্রাকচারে টেইল রিকার্সন


এখানে আমরা দেখব টেইল রিকার্সন কী। টেইল রিকার্সন হল মূলত রিকার্সিভ ফাংশনকে ফাংশনের লাস্ট স্টেটমেন্ট হিসেবে ব্যবহার করা। তাই যখন রিকার্সিভ কল থেকে ফেরার পর কিছু করার থাকে না, সেটাকে টেইল রিকার্সন বলা হয়। আমরা টেইল রিকার্সনের একটি উদাহরণ দেখব।

উদাহরণ

#include 
using namespace std;
void printN(int n) {
    if(n < 0) {
        return;
    }
    cout << n << " ";
    printN(n - 1);
}
int main() {
    printN(10);
}

আউটপুট

10 9 8 7 6 5 4 3 2 1 0

টেইল রিকার্সন নন-টেইল রিকার্সনের চেয়ে ভালো। কারণ রিকার্সিভ কলের পরে কোনো টাস্ক বাকি না থাকায়, কম্পাইলার কোড অপ্টিমাইজ করতে সহজ পায়। এক ফাংশন কল হলে তার অ্যাড্রেস স্টোর হয় স্ট্যাকে। তাই যদি টেইল রিকার্সন হয়, তবে স্ট্যাকে অ্যাড্রেস স্টোর করার প্রয়োজন নেই।

আমরা ফ্যাক্টোরিয়াল রিকার্সন দিয়ে করতে পারি, কিন্তু ফাংশনটি টেইল রিকার্সিভ নয়। fact(n-1) এর মান fact(n)-এর ভিতরে ব্যবহৃত হয়।

long fact(int n) {
    if(n <= 1)
        return 1;
    n * fact(n-1);
}

একে টেইল রিকার্সিভ বানাতে পারি কিছু এক্সট্রা প্যারামিটার যোগ করে। নিচের মত -

long fact(long n, long a) {
    if(n == 0)
        return a;
    return fact(n-1, a*n);
}
  1. করেসপন্ডেন্স ভিত্তিক ডেটা স্ট্রাকচার

  2. ডেটা স্ট্রাকচারে অ্যাডজেসেন্সি লিস্ট

  3. ডেটা স্ট্রাকচারে মিনিমাম স্প্যানিং ট্রি

  4. ডেটা স্ট্রাকচারে বাইনারি ট্রি রিপ্রেজেন্টেশন