Recursion এবং Global Variables in MATLAB
MATLAB-এ Recursion এবং Global Variables দুটি শক্তিশালী কনসেপ্ট যা কোডের কাঠামো এবং কার্যকলাপকে পরিবর্তন করতে পারে। এই দুটি বৈশিষ্ট্য আলাদাভাবে ব্যবহৃত হলেও, একে অপরের সাথে সংযুক্ত হয়ে বেশ কার্যকরী হতে পারে, তবে এটি ব্যবহার করার সময় সতর্কতা অবলম্বন করা উচিত। নিচে আমরা Recursion এবং Global Variables এর ব্যবহার এবং তাদের পার্থক্য এবং উদাহরণ আলোচনা করব।
Recursion (রেকার্সন)
Recursion হলো এমন একটি প্রক্রিয়া যেখানে একটি ফাংশন নিজেই নিজের উপর কাজ করে। অর্থাৎ, ফাংশনটি নিজেকে কল করে এবং তখন পর্যন্ত চলতে থাকে যতক্ষণ না একটি শর্ত পূর্ণ হয় (এটি "base case" বলা হয়)। রেকার্সন বেশিরভাগ সময় পুনরাবৃত্তি বা ডাটা ট্রাভার্সিং সমস্যার সমাধান করার জন্য ব্যবহৃত হয়।
রেকার্সন প্রয়োজনীয়তা:
- Base case: রেকার্সন বন্ধ করার জন্য একটি শর্ত থাকতে হবে।
- Recursive case: ফাংশন নিজেকে কল করে এবং উপগ্রহ সমস্যার সমাধান করে।
উদাহরণ: ফ্যাক্টোরিয়াল (Factorial) ফাংশন
ফ্যাক্টোরিয়াল হল একটি সাধারণ উদাহরণ যেখানে একটি সংখ্যা n এর ফ্যাক্টোরিয়াল হিসাব করা হয় (যেমন, n! = n * (n-1) * (n-2) * ... * 1)।
function result = factorial(n)
if n == 0 % Base case
result = 1;
else % Recursive case
result = n * factorial(n - 1); % Recursive call
end
endএখানে factorial ফাংশনটি নিজেকে কল করে যতক্ষণ না n == 0 শর্তটি পূর্ণ হয়, তখন এটি 1 রিটার্ন করে এবং সমগ্র রেকার্সন শেষ হয়।
কিভাবে এটি কাজ করে:
factorial(5)কল করলে এটি প্রথমে5 * factorial(4)হবে।factorial(4)কল হলে এটি4 * factorial(3)হবে।- এবং এরকম চলতে থাকবে যতক্ষণ না
n == 0হয়।
উদাহরণ: Fibonacci সিরিজ
ফিবোনাচি সিরিজে প্রতিটি সংখ্যার মান পূর্ববর্তী দুটি সংখ্যার যোগফল। এটি একটি রেকার্সনাল ফাংশন দ্বারা সহজেই নির্ণয় করা যায়।
function result = fibonacci(n)
if n == 0
result = 0;
elseif n == 1
result = 1;
else
result = fibonacci(n - 1) + fibonacci(n - 2); % Recursive call
end
endএখানে, fibonacci(5) ফলস্বরূপ হবে 5, কারণ ফিবোনাচি সিরিজে 5-th সংখ্যাটি 5।
Global Variables (গ্লোবাল ভেরিয়েবলস)
Global Variables হলো এমন ভেরিয়েবলস যেগুলি পুরো MATLAB ওয়ার্কস্পেসে এক্সেসযোগ্য, অর্থাৎ একাধিক ফাংশন থেকে তাদের অ্যাক্সেস করা যায়। গ্লোবাল ভেরিয়েবলসকে একাধিক ফাংশনে শেয়ার করার জন্য ব্যবহার করা হয়।
গ্লোবাল ভেরিয়েবলের বৈশিষ্ট্য:
- একাধিক ফাংশনে অ্যাক্সেস: গ্লোবাল ভেরিয়েবল একটি ফাংশন থেকে অন্য ফাংশনে সরাসরি অ্যাক্সেস করা যেতে পারে।
- নাম পরিবর্তন হওয়া: গ্লোবাল ভেরিয়েবলসের মান একটি ফাংশন থেকে অন্য ফাংশনে পরিবর্তন করা যেতে পারে।
গ্লোবাল ভেরিয়েবলসের ব্যবহার:
গ্লোবাল ভেরিয়েবল ব্যবহার করতে, ফাংশনে global কিওয়ার্ড ব্যবহার করতে হয়, এবং সেই একই নামের গ্লোবাল ভেরিয়েবলটি main workspace এবং অন্যান্য ফাংশনে অ্যাক্সেস করা যায়।
উদাহরণ:
global counter; % Declare global variable
counter = 0;
function increment()
global counter; % Access the global variable
counter = counter + 1;
end
function displayCounter()
global counter; % Access the global variable
disp(counter);
endএখানে, counter একটি গ্লোবাল ভেরিয়েবল যা increment এবং displayCounter ফাংশনের মধ্যে শেয়ার করা হচ্ছে।
ফাংশনগুলির ব্যবহার:
increment(); % Increment the counter by 1
displayCounter(); % Display the current value of counterএতে, প্রথমে increment() ফাংশনটি counter এর মান বাড়িয়ে দেবে এবং পরবর্তীতে displayCounter() ফাংশনটি এটি প্রদর্শন করবে।
গ্লোবাল ভেরিয়েবলসের সতর্কতা:
- গ্লোবাল ভেরিয়েবল ব্যবহার করা খুব সাবধানে করা উচিত কারণ এটি কোডের পোর্টেবিলিটি এবং ব্যাকট্র্যাকিং সমস্যায় ফেলতে পারে।
- গ্লোবাল ভেরিয়েবলসের পরিবর্তন ও অ্যাক্সেস ট্র্যাক করা কঠিন হতে পারে, তাই স্থানীয় ভেরিয়েবল ব্যবহার করা সাধারণত ভাল অভ্যাস।
Recursion এবং Global Variables এর ব্যবহার একসাথে
কখনও কখনও, রেকার্সন এবং গ্লোবাল ভেরিয়েবল একসাথে ব্যবহৃত হতে পারে। তবে এটি সতর্কতার সাথে ব্যবহৃত হওয়া উচিত কারণ গ্লোবাল ভেরিয়েবলকে রেকার্সনাল ফাংশনের মধ্যে ব্যবহার করলে তা ভুল বা অপ্রত্যাশিত ফলাফল তৈরি করতে পারে।
উদাহরণ: গ্লোবাল ভেরিয়েবল ব্যবহার করে রেকার্সনাল ফাংশন
global totalSum;
totalSum = 0;
function result = sumNumbers(n)
global totalSum;
if n == 0
result = totalSum;
else
totalSum = totalSum + n; % Update global variable
result = sumNumbers(n - 1); % Recursive call
end
endএখানে, totalSum গ্লোবাল ভেরিয়েবল রেকার্সনাল ফাংশন sumNumbers দ্বারা আপডেট হচ্ছে এবং শেষ পর্যন্ত এটি n পর্যন্ত সব সংখ্যার যোগফল প্রদান করবে।
সংক্ষেপে
- Recursion হলো একটি প্রক্রিয়া যেখানে একটি ফাংশন নিজেকে কল করে, সাধারণত একটি সমস্যা সমাধানের জন্য। এটি পুনরাবৃত্তি এবং ডাটা ট্রাভার্সিং সমস্যা সমাধানে কার্যকর।
- Global Variables হলো সেই ভেরিয়েবলস যা একাধিক ফাংশনে অ্যাক্সেসযোগ্য। এগুলি সাধারণত গ্লোবাল ডেটা ভাগ করার জন্য ব্যবহৃত হয়, তবে এগুলোর ব্যবহার সাবধানে করা উচিত।