Recursive Procedures এর উদাহরণ

Procedures এবং Functions (প্রসিডিউরস এবং ফাংশনস) - টিসিএল/টিকে (Tcl/Tk) - Computer Programming

317

টিসিএল (Tcl) - Recursive Procedures এর উদাহরণ

Recursive procedure হলো এমন একটি ফাংশন বা প্রসিডিউর যা নিজের প্রতি কল (recursive call) করে। এটি এমন একটি কৌশল যেখানে একটি সমস্যা ছোট আকারে সমাধান করার জন্য সেই একই সমস্যা আবার সমাধান করার চেষ্টা করা হয়। টিসিএল-এ রিকার্সিভ ফাংশন তৈরি করা খুবই সহজ এবং এটি বেশ কিছু সমস্যা সমাধানে খুব কার্যকরী।

১. রিকার্সন কী?

রিকার্সন এমন একটি কৌশল যেখানে একটি ফাংশন বা প্রসিডিউর নিজেকে কল করে, এবং এটি একটি স্টপ কন্ডিশন (base case) এর মাধ্যমে শেষ হয়। রিকার্সন সাধারনত বড় সমস্যা ছোট ছোট উপ-সমস্যায় ভাগ করার জন্য ব্যবহৃত হয়।

২. ফ্যাক্টোরিয়াল (Factorial) রিকার্সিভ ফাংশন

ফ্যাক্টোরিয়াল একটি সাধারণ রিকার্সিভ সমস্যা। n! এর মান হিসাব করা হয়:

n! = n * (n-1) * (n-2) * ... * 1

যেখানে, 0! এর মান 1 হিসেবে ধরা হয়।

উদাহরণ:

proc factorial {n} {
    if { $n == 0 } {
        return 1
    } else {
        return [expr $n * [factorial [expr $n - 1]]]
    }
}

set result [factorial 5]
puts $result  ;# আউটপুট: 120

এখানে:

  • factorial একটি রিকার্সিভ ফাংশন যা n এর মান ০ হলে 1 রিটার্ন করে (base case)।
  • অন্যথায়, factorial নিজেকে কল করে এবং n * factorial(n-1) হিসাব করে ফ্যাক্টোরিয়াল বের করে।

স্টেপ বাই স্টেপ কার্যক্রম:

  • factorial 55 * factorial 4
  • factorial 44 * factorial 3
  • factorial 33 * factorial 2
  • factorial 22 * factorial 1
  • factorial 11 * factorial 0
  • factorial 01 (base case)

তবে factorial 5 এর ফলস্বরূপ:

5 * 4 * 3 * 2 * 1 = 120

৩. ফিবোনাচ্চি সিরিজ (Fibonacci Series) রিকার্সিভ ফাংশন

ফিবোনাচ্চি সিরিজের প্রথম কিছু সংখ্যার গাণিতিক সম্পর্ক এমন:

F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n >= 2)

উদাহরণ:

proc fibonacci {n} {
    if { $n == 0 } {
        return 0
    } elseif { $n == 1 } {
        return 1
    } else {
        return [expr [fibonacci [expr $n - 1]] + [fibonacci [expr $n - 2]]]
    }
}

set result [fibonacci 6]
puts $result  ;# আউটপুট: 8

এখানে:

  • fibonacci ফাংশনটি রিকার্সিভভাবে আগের দুটি ফিবোনাচ্চি সংখ্যার যোগফল বের করে।

স্টেপ বাই স্টেপ কার্যক্রম:

  • fibonacci 6fibonacci 5 + fibonacci 4
  • fibonacci 5fibonacci 4 + fibonacci 3
  • fibonacci 4fibonacci 3 + fibonacci 2
  • ... এবং এভাবে চলতে থাকে।

ফিবোনাচ্চি সিরিজের ৬ নম্বর সংখ্যা হল 8, কারণ:

F(0) = 0, F(1) = 1, F(2) = 1, F(3) = 2, F(4) = 3, F(5) = 5, F(6) = 8

৪. তিনটি ফ্যাক্টর ব্যবহারকারী রিকার্সিভ ফাংশন

একটি সাধারণ রিকার্সিভ ফাংশনের উদাহরণ যেখানে তিনটি আর্গুমেন্ট ব্যবহার করে গাণিতিক অপারেশন করা হয়।

উদাহরণ:

proc sumRecursive {a b c} {
    if { $a <= 0 } {
        return $c
    } else {
        return [sumRecursive [expr $a - 1] $b [expr $c + $b]]
    }
}

set result [sumRecursive 5 3 0]
puts $result  ;# আউটপুট: 15

এখানে, sumRecursive ফাংশনটি একটি রিকার্সিভ পদ্ধতিতে তিনটি আর্গুমেন্ট ব্যবহার করে একটি সংখ্যার যোগফল বের করছে। এটা মূলত সিম্পল গনিতীয় অপারেশনগুলোকে রিকার্সিভভাবে সম্পাদন করে।

৫. স্টপ কন্ডিশন এবং ইনফিনিট রিকার্সন

রিকার্সন ব্যবহারের সময় স্টপ কন্ডিশন বা base case অপরিহার্য। যদি স্টপ কন্ডিশন না থাকে, তবে রিকার্সিভ কলের মাধ্যমে ইনফিনিট রিকার্সন হতে পারে, যার ফলে স্ট্যাক ওভারফ্লো (stack overflow) হতে পারে। তাই স্টপ কন্ডিশন সতর্কতার সাথে ঠিক করা উচিত।


উপসংহার

টিসিএল-এ রিকার্সিভ প্রসিডিউরস এমন একটি শক্তিশালী কৌশল যা বড় সমস্যাগুলোর সমাধান ছোট ছোট উপ-সমস্যায় ভাগ করে। ফ্যাক্টোরিয়াল, ফিবোনাচ্চি সিরিজ এবং অন্যান্য গাণিতিক সমস্যাগুলির সমাধানে রিকার্সন খুব কার্যকরী। তবে, রিকার্সন ব্যবহারের সময় স্টপ কন্ডিশন ঠিকভাবে স্থাপন করা অত্যন্ত গুরুত্বপূর্ণ, যাতে ইনফিনিট রিকার্সন থেকে রক্ষা পাওয়া যায়।

Content added By
Promotion

Are you sure to start over?

Loading...