কম্পিউটার

জাভাতে রিকারশন কীভাবে ব্যবহার করবেন

প্রোগ্রামিং-এ, রিকারসন বলতে সেই প্রক্রিয়াকে বোঝায় যেখানে একটি ফাংশন প্রত্যক্ষ বা পরোক্ষভাবে নিজেকে কল করে। কম্পিউটার বিজ্ঞানের বেশ কিছু সমস্যা সমাধানের জন্য Recursion ব্যবহার করা হয়।

জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজ রিকারসিভ মেথড তৈরি করাকে সমর্থন করে, যেগুলো নিজেদেরকে কল করার পদ্ধতি।

এই টিউটোরিয়ালে, আমরা উদাহরণের সাথে আলোচনা করতে যাচ্ছি, কিভাবে রিকারশন কাজ করে এবং কিভাবে আপনি জাভাতে একটি রিকারসিভ ফাংশন তৈরি করতে পারেন। এই নির্দেশিকাটি পড়ার পরে, আপনি জাভাতে পুনরাবৃত্ত পদ্ধতি লিখতে বিশেষজ্ঞ হবেন।

জাভা পদ্ধতি

পদ্ধতি, কখনও কখনও ফাংশন বলা হয়, কোডের ব্লক যা একটি নির্দিষ্ট কাজ সম্পাদন করে। উদাহরণস্বরূপ, মানগুলির একটি অ্যারের যোগফল গণনা করতে বা কনসোলে অ্যারের বিষয়বস্তু মুদ্রণ করতে একটি পদ্ধতি ব্যবহার করা যেতে পারে।

এখানে জাভাতে একটি পদ্ধতির জন্য সিনট্যাক্স রয়েছে:

modifier static returnType methodName (Parameters) {
	// Method body
}

উদাহরণস্বরূপ, ধরুন আপনি একটি পদ্ধতি তৈরি করতে চেয়েছিলেন যা বাক্যটি ছাপিয়েছে "এটি বুধবার! আমরা সপ্তাহের অর্ধেক পথ! কনসোলে আপনি এই কোড ব্যবহার করে তা করতে পারেন:

class Main {
public static void printItsWednesday() {
	System.out.println("It's Wednesday! We're half-way through the week!");
}

public static void main(String[] args) {
	printItsWednesday();
}
}

যখন আমরা printItsWednesday() ব্যবহার করে এই পদ্ধতিটিকে কল করি , নিম্নলিখিত ফেরত দেওয়া হয়:

আজ বুধবার! আমরা সপ্তাহের অর্ধেক পথ!

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।

আপনি যদি জাভা পদ্ধতি সম্পর্কে আরও জানতে আগ্রহী হন, আপনি এখানে জাভা পদ্ধতির জন্য আমাদের সম্পূর্ণ গাইড পড়তে পারেন।

আমাদের উপরের উদাহরণে, আমরা prinItsWednesday() কল করি মূল প্রোগ্রামে পদ্ধতি। কিন্তু আমরা যদি আমাদের পদ্ধতিকে পদ্ধতিতেই কল করি তবে আমরা একটি পুনরাবৃত্তিমূলক পদ্ধতি তৈরি করতাম।

জাভা রিকারশন

পুনরাবৃত্ত পদ্ধতি হল এমন পদ্ধতি যা প্রথমে প্রধান পদ্ধতির মধ্যে বলা হয় এবং তারপরে পদ্ধতির মধ্যেই বলা হয়। এখানে একটি পুনরাবৃত্ত পদ্ধতির জন্য সিনট্যাক্স রয়েছে:

static void executeMethod() {
	// Code here
	executeMethod(); // This is our recursive call
	// Code here
}

public static void main(String[] args) {
	executeMethod(); // This is the normal method call
}

যখন আমরা আমাদের প্রোগ্রাম চালাই, তখন executeMethod() আমাদের প্রধান প্রোগ্রামে পদ্ধতি বলা হয়। এটি executeMethod()-এ কোডটি ঘটায় চালানোর পদ্ধতি, যা এই ক্ষেত্রে executeMethod() অন্তর্ভুক্ত করে পদ্ধতি সুতরাং, যখন আমাদের প্রোগ্রাম চলে, এটি একটি লুপে প্রবেশ করবে।

প্রোগ্রামটি executeMethod() চালানো চালিয়ে যাবে একটি শর্ত পূরণ না হওয়া পর্যন্ত পদ্ধতি যা এটি চালিয়ে যাওয়া থেকে বাধা দেয়। যদি কোনো শর্ত নির্দিষ্ট করা না থাকে যা পুনরাবৃত্তি বন্ধ করতে পারে, প্রোগ্রামটি চিরতরে চলবে। এটি অসীম পুনরাবৃত্তি হিসাবে উল্লেখ করা হয়।

কেন আপনি পুনরাবৃত্তি ব্যবহার করা উচিত? প্রথমত, পুনরাবৃত্তি কিছু ক্ষেত্রে একটি প্রোগ্রামের সময় জটিলতা কমাতে পারে। দ্বিতীয়ত, পুনরাবৃত্তি আপনার জন্য আরও পঠনযোগ্য এবং রক্ষণাবেক্ষণযোগ্য উপায়ে কিছু অ্যালগরিদম বাস্তবায়ন করা সহজ করে তুলতে পারে।

এখানে প্রোগ্রামগুলির কয়েকটি উদাহরণ রয়েছে যা প্রায়শই পুনরাবৃত্তি ব্যবহার করে লেখা হয়:

  • ফিবোনাচি ক্রম গণনা করা হচ্ছে
  • একটি স্ট্রিং উল্টানো
  • সংখ্যার ফ্যাক্টরিয়াল গণনা করা
  • একটি বাইনারি গাছের উচ্চতা গণনা করা হচ্ছে

এটি বলেছে, একটি কাজ সম্পাদন করার জন্য একটি আদর্শ পদ্ধতি লেখার চেয়ে পুনরাবৃত্তি ধীর হতে পারে। কারণ প্রতিবার একটি পুনরাবৃত্ত পদ্ধতি কার্যকর করা হলে রিকারশন ভেরিয়েবলের জন্য একটি নতুন স্টোরেজ অবস্থান তৈরি করে।

জাভা রিকার্সন উদাহরণ

জাভাতে পুনরাবৃত্তি কীভাবে কাজ করে তা প্রদর্শন করতে দুটি উদাহরণের মধ্য দিয়ে চলুন।

রিকারশন ব্যবহার করে একটি স্ট্রিং উল্টানো

ধরুন আমরা একজন মাধ্যমিক বিদ্যালয়ের শিক্ষকের জন্য একটি প্রোগ্রাম তৈরি করছি যা সারা বছর ধরে প্রতিটি শিক্ষার্থীর গ্রেডের সাথে একটি স্ট্রিংকে বিপরীত করে। স্ট্রিংটি শিক্ষার্থীর প্রাপ্ত প্রথম গ্রেড দিয়ে শুরু হয় এবং শিক্ষার্থীর অর্জিত সাম্প্রতিকতম গ্রেড দিয়ে শেষ হয়। আমরা স্ট্রিংটি বিপরীত করতে চাই যাতে ছাত্রের দ্বারা অর্জিত শেষ বা সাম্প্রতিকতম গ্রেডটি স্ট্রিংটিতে প্রথম হয়।

আমরা স্ট্রিং বিপরীত করতে নিম্নলিখিত কোড ব্যবহার করতে পারেন:

public class ReverseGrades {
	public static String reverse(String grades) {
		if (grades.isEmpty())
			return grades;
		return reverse(grades.substring(1)) + grades.charAt(0);
	}

	public static void main(String[] args) {
		String grades = "CBCBAABACAABA";
		String reverse_grades = reverse(grades);

		System.out.println("This student's grades for the year are: " + reverse_grades);
	}
}

আমাদের কোড ফিরে আসে:

বছরের জন্য এই শিক্ষার্থীর গ্রেডগুলি হল:ABAACABAABCBC

আপনি দেখতে পাচ্ছেন, আমাদের প্রোগ্রামটি আমাদের স্ট্রিংয়ের বিষয়বস্তুকে বিপরীত করেছে। আমাদের প্রোগ্রামে, আমরা reverse() নামে একটি পুনরাবৃত্ত ফাংশন তৈরি করেছি .

যখন reverse() ফাংশন নির্বাহ করা হয়েছে, প্রথমে পরীক্ষা করুন গ্রেড স্ট্রিং খালি কিনা। যদি এটি হয়, আমরা মূল প্রোগ্রামে গ্রেডের তালিকা ফিরিয়ে দিই। এটি পুনরাবৃত্তি বন্ধ করে কারণ reverse() ফাংশন শেষে কল চালানোর সুযোগ দেওয়া হয় না।

গ্রেড স্ট্রিং খালি না থাকলে, আমাদের প্রোগ্রাম reverse() চালাবে আবার পদ্ধতি এবং ফাংশনের ফলাফলটিকে বাক্যের প্রথম অক্ষরের সাথে সংযুক্ত করুন। আমরা charAt() ব্যবহার করি বাক্যটির প্রথম অক্ষরটি পুনরুদ্ধার করার জন্য আমাদের উদাহরণে পদ্ধতি, এবং এটিকে reverse()-এর বাম দিকে যুক্ত করুন পদ্ধতি

আমাদের স্ট্রিংটি উল্টে যাওয়ার পরে, This student’s grades for the year are: উল্লেখ করে একটি বার্তা “, ছাত্র গ্রেডের বিপরীত স্ট্রিং অনুসরণ করে, প্রোগ্রামে ফিরে আসে।

পুনরাবৃত্তি ব্যবহার করে একটি ফ্যাক্টরিয়াল গণনা করা

আরেকটি উদাহরণ যেখানে পুনরাবৃত্তি কার্যকর হতে পারে একটি সংখ্যার ফ্যাক্টরিয়াল গণনা করা।

গণিতে, ফ্যাক্টরিয়াল হল সমস্ত ধনাত্মক পূর্ণসংখ্যার গুণফল যা একত্রে গুণিত সংখ্যার চেয়ে কম বা সমান। উদাহরণস্বরূপ, 5 এর ফ্যাক্টরিয়াল 5*4*3*2*1 এর সমান, যা 120। কারণ ফ্যাক্টরিয়াল পদ্ধতিতে পুনরাবৃত্তিমূলক গণনা জড়িত, তারা একটি ভাল বাস্তব জীবনের উদাহরণ যেখানে পুনরাবৃত্তি একটি সমস্যা সমাধানে কার্যকর হতে পারে। .

নিম্নলিখিত জাভা প্রোগ্রামটি আমাদের জাভাতে 7 নম্বরের ফ্যাক্টরিয়াল গণনা করতে দেয়:

class Main {
	static int calculateFactorial(int number) {
		if (number != 0)
			return number * calculateFactorial(number-1);
		else
			return 1;
	}
	
	public static void main(String[] args) {
		int num = 7;
		int answer = calculateFactorial(num);
		System.out.println("The factorial of 7 is: " + answer);
	}
}

আমাদের কোড ফিরে আসে:

The factorial of 7 is: 5040

এই উদাহরণে, আমরা calculateFactorial() নামে একটি পদ্ধতি তৈরি করি যা পরবর্তী calculateFactorial() এর ফলাফল দ্বারা সংখ্যা প্যারামিটারে সংরক্ষিত সংখ্যাকে গুণ করে পদ্ধতি সংখ্যা প্যারামিটার 0 এর সমান না হওয়া পর্যন্ত এই প্রক্রিয়াটি কার্যকর হয়।

সংখ্যা প্যারামিটারটি 0 এর সমান হলে, আমাদের কোডের if বিবৃতিটি 1 প্রদান করে এবং calculateFactorial() এর ফলাফল পদ্ধতিটি মূল প্রোগ্রামে ফিরে যায়।

সুতরাং, calculateFactorial() পদ্ধতিটি 7*6*5*4*3*2*1 সঞ্চালন করে, তারপর মূল প্রোগ্রামে উত্তর প্রদান করে। উত্তরটি গণনা করা হয়ে গেলে, The factorial of 7 is: , আমাদের প্রোগ্রাম দ্বারা গণনা করা উত্তর অনুসরণ করে, কনসোলে মুদ্রিত হয়।

উপসংহার

Recursion হল প্রোগ্রামিং এর একটি ধারণা যা নিজেকে কল করে এমন একটি পদ্ধতি বর্ণনা করতে ব্যবহৃত হয়। পুনরাবৃত্তিমূলক পদ্ধতিগুলি এমন ক্ষেত্রে কার্যকর হতে পারে যেখানে আপনাকে একটি টাস্ক একাধিকবার পুনরাবৃত্তি করতে হবে এবং বর্তমান পুনরাবৃত্তিতে সেই টাস্কের পূর্ববর্তী পুনরাবৃত্তির ফলাফল ব্যবহার করতে হবে।

এই টিউটোরিয়ালটি জাভাতে পুনরাবৃত্তির মূল বিষয়গুলি এবং কীভাবে পুনরাবৃত্ত পদ্ধতিগুলি তৈরি করতে হয় তা নিয়ে আলোচনা করা হয়েছে। উপরন্তু, এই টিউটোরিয়ালটি একটি স্ট্রিংকে উল্টানো এবং একটি ফ্যাক্টরিয়াল গণনা করার রেফারেন্স সহ ক্রিয়াতে পুনরাবৃত্তির দুটি উদাহরণের মধ্য দিয়ে হেঁটেছে।

আপনি এখন একজন পেশাদারের মতো জাভাতে পুনরাবৃত্তিমূলক পদ্ধতির সাথে কাজ শুরু করতে প্রস্তুত!


  1. কিভাবে Java Math.random ব্যবহার করবেন

  2. জাভাতে সাব-প্যাকেজ কিভাবে ব্যবহার করবেন?

  3. রুবিতে রিকারশন এবং মেমোাইজেশন কীভাবে ব্যবহার করবেন

  4. ম্যাকে জাভা ইনস্টল করতে ব্রু কীভাবে ব্যবহার করবেন