Pattern Matching এবং Recursion এর উদাহরণ

Pattern Matching এবং Collections (প্যাটার্ন ম্যাচিং এবং কালেকশনস) - স্কালা কালেকশন (Scala Collections) - Computer Programming

367

Pattern Matching এবং Recursion দুটি শক্তিশালী বৈশিষ্ট্য যা স্কালার মতো ফাংশনাল প্রোগ্রামিং ভাষায় ব্যবহৃত হয়। এই দুটি ধারণা একত্রে ব্যবহার করলে কোড আরও সঠিক, পরিষ্কার এবং শক্তিশালী হয়। আসুন, এগুলির প্রত্যেকটির উদাহরণ দেখি।


১. Pattern Matching (প্যাটার্ন ম্যাচিং)

Pattern Matching হল একটি শক্তিশালী ফিচার যা স্কালাতে কন্ডিশনাল স্টেটমেন্টগুলির (যেমন if-else বা switch) বিকল্প হিসেবে কাজ করে। এটি ডেটার গঠন বা ধরন (যেমন ক্লাস, টিউপল, লিস্ট ইত্যাদি) অনুযায়ী ভিন্ন ভিন্ন কোডের ব্লক চালাতে সহায়ক।

উদাহরণ:

def describe(x: Any): String = x match {
  case 1 => "এটি ১"
  case "Hello" => "এটি একটি স্ট্রিং"
  case _: Int => "এটি একটি পূর্ণসংখ্যা"
  case _: String => "এটি একটি স্ট্রিং"
  case _ => "অজানা ধরনের ডেটা"
}

println(describe(1))        // এটি ১
println(describe("Hello"))  // এটি একটি স্ট্রিং
println(describe(42))       // এটি একটি পূর্ণসংখ্যা
println(describe(true))     // অজানা ধরনের ডেটা

এখানে match ব্লকটি ডেটার ধরন অনুসারে কেসগুলোকে মেলে এবং সেই অনুযায়ী ফলাফল প্রদান করে। _: ব্যবহার করা হয়েছে টাইপ মেচিংয়ের জন্য (যেমন Int, String ইত্যাদি)।


২. Recursion (রিকারশন)

Recursion হল একটি ফাংশনের নিজেই নিজে কল করা, যেখানে একটি ছোট সমস্যাকে সমাধান করার জন্য বড় সমস্যাকে সমাধান করার জন্য একই ফাংশন বারবার ব্যবহার করা হয়। এটি বিশেষত গাণিতিক সমস্যা যেমন ফ্যাক্টোরিয়াল, ফিবোনাচ্চি সিরিজ ইত্যাদির জন্য ব্যবহৃত হয়।

উদাহরণ:

  1. ফ্যাক্টোরিয়াল (Factorial) রিকারশন উদাহরণ:
def factorial(n: Int): Int = {
  if (n <= 1) 1
  else n * factorial(n - 1)
}

println(factorial(5))  // 120

এখানে factorial ফাংশনটি নিজেই নিজে কল করে (রিকারশন)। এটি একটি বেস কেস (if (n <= 1)) চেক করে, এবং সঠিক ফলাফল পেতে রিকারসিভ কল চালায়।


  1. ফিবোনাচ্চি (Fibonacci) সিরিজ রিকারশন উদাহরণ:
def fibonacci(n: Int): Int = {
  if (n <= 1) n
  else fibonacci(n - 1) + fibonacci(n - 2)
}

println(fibonacci(6))  // 8

এখানে fibonacci ফাংশনটি ফিবোনাচ্চি সিরিজের Nতম উপাদান বের করার জন্য রিকারশন ব্যবহার করছে। fibonacci(n - 1) এবং fibonacci(n - 2) প্রতিটি কল করা হয় এবং একত্রিত হয়ে পরবর্তী মান প্রদান করে।


Pattern Matching এবং Recursion একসাথে ব্যবহার

Pattern Matching এবং Recursion একসাথে ব্যবহার করে কোড আরও পরিষ্কার এবং স্বাভাবিক হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে লিস্টের উপর রিকারশন এবং প্যাটার্ন ম্যাচিং ব্যবহার করা হয়েছে।

উদাহরণ:

def sumList(xs: List[Int]): Int = xs match {
  case Nil => 0  // যদি লিস্টটি খালি হয়
  case head :: tail => head + sumList(tail)  // হেডটি যোগ করে বাকি অংশের জন্য রিকারশন কল
}

println(sumList(List(1, 2, 3, 4, 5)))  // 15

এখানে, sumList ফাংশনটি লিস্টের উপাদানগুলির যোগফল বের করে। প্যাটার্ন ম্যাচিং ব্যবহার করা হয়েছে, যেখানে Nil একটি খালি লিস্ট এবং head :: tail একটি অ-খালি লিস্টের প্যাটার্ন হিসেবে কাজ করে। রিকারশন ব্যবহার করা হয়েছে উপাদানগুলিকে এক এক করে যোগ করার জন্য।


সারাংশ

  • Pattern Matching হল এমন একটি ক্ষমতা যা ডেটার ধরন বা গঠন অনুযায়ী বিভিন্ন অ্যাকশন বাস্তবায়ন করতে সহায়ক হয়। এটি কোডকে আরও সহজ এবং পরিষ্কার করতে সাহায্য করে।
  • Recursion হল একটি ফাংশনের নিজে নিজে কল করা। এটি বড় সমস্যাগুলিকে ছোট ছোট অংশে ভাগ করে এবং প্রতিটি অংশকে সমাধান করার জন্য ব্যবহার করা হয়।

এই দুটি ধারণা একত্রে স্কালাতে আরও শক্তিশালী এবং পরিষ্কার কোড লেখার জন্য সহায়ক।

Content added By
Promotion

Are you sure to start over?

Loading...