Recursion Algorithm (Bangla)
Recursive Function( পুনরাবৃত্ত ফাংশন)
কেন আমরা রিকার্সন ব্যবহার করব?
Factorial Function
Iterative Factorial with explaination
def iterative_factorial(n):
result = 1
for i in range(1,n+1):
result = result * i
return result
print(iterative_factorial(5))
-----
ব্যাখ্যা:
1. ফাংশন ডেফিনিশন: iterative_factorial(n) একটি ফাংশন যা ইনপুট হিসেবে একটি সংখ্যা n নেয় এবং এর ফ্যাক্টোরিয়াল বের করে।
2. শুরু মান: result = 1 দিয়ে শুরু করা হয়েছে, কারণ ফ্যাক্টোরিয়ালের জন্য কোনো সংখ্যার ফ্যাক্টোরিয়াল ১ দিয়ে শুরু হয়।
3. লুপ: for i in range(1, n + 1) লুপটি ১ থেকে n পর্যন্ত প্রতিটি সংখ্যার জন্য চলে। এখানে, range(1, n + 1) মানে ১ থেকে n পর্যন্ত সবগুলো সংখ্যা নেবে।
4. গুণ করা: লুপের প্রতিটি ধাপে, result = result * i এর মাধ্যমে আগের মানের সাথে বর্তমান সংখ্যা i কে গুণ করা হয়। ফলে result ধাপে ধাপে ফ্যাক্টোরিয়ালের মান ধারণ করে।
5. ফলাফল রিটার্ন করা: লুপ শেষ হওয়ার পর, result-এ ফ্যাক্টোরিয়ালের চূড়ান্ত মান থাকবে, যা return result দ্বারা ফেরত দেয়া হয়।
6. প্রিন্ট: print(iterative_factorial(5)) লাইনে ৫ সংখ্যাটির ফ্যাক্টোরিয়াল ফাংশনের মাধ্যমে গণনা করে প্রিন্ট করা হয়েছে। অর্থাৎ, ৫! (৫ ফ্যাক্টোরিয়াল) = ৫ × ৪ × ৩ × ২ × ১ = ১২০।
এভাবে, ৫ সংখ্যার ফ্যাক্টো
রিয়াল হিসেবে আউটপুট আসবে ১২০।
পাইথনে Recursive Factorial ফাংশন
আজকের এই ব্লগে আমরা পাইথনের recursive_factorial
ফাংশনটি নিয়ে আলোচনা করব। ফ্যাক্টরিয়াল হচ্ছে
এমন একটি গণিত অপারেশন, যেখানে একটি সংখ্যাকে তার চেয়ে ছোট সব ধনাত্মক পূর্ণসংখ্যার গুণফল হিসেবে প্রকাশ করা হয়।
নিচে কোডটি ধাপে ধাপে ব্যাখ্যা করা হয়েছে।
কোডটি:
def recursive_factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * recursive_factorial(n-1)
print(recursive_factorial(5))
কিভাবে কোডটি কাজ করছে?
ধাপ ১: বেস কেস (Base Case) চেক করা
if n == 0 or n == 1:
return 1
এখানে প্রথম শর্তটি হচ্ছে বেস কেস। অর্থাৎ, যদি n
এর মান ০ বা ১ হয়, তাহলে ফাংশনটি সরাসরি ১ রিটার্ন করবে। কারণ, ০ বা ১ এর ফ্যাক্টরিয়াল সর্বদা ১ হয়।
ধাপ ২: Recursive কল করা
যখন n
এর মান ০ বা ১ এর বেশি হয়, তখন ফাংশনটি else
অংশে যাবে এবং নিজেকে পুনরায় কল করবে:
return n * recursive_factorial(n-1)
এখানে recursive_factorial(n-1)
অংশটি ফাংশনটিকে আবার n-1
মান নিয়ে কল করছে। এটি চালু থাকবে যতক্ষণ না
n
এর মান ১ বা ০ হয়ে যায়, তখন বেস কেস অনুযায়ী ১ রিটার্ন হবে।
উদাহরণ
যদি আমরা recursive_factorial(5)
কল করি, তাহলে নিচের ধাপগুলোতে কোডটি কাজ করবে:
5 * recursive_factorial(4)
5 * (4 * recursive_factorial(3))
5 * (4 * (3 * recursive_factorial(2)))
5 * (4 * (3 * (2 * recursive_factorial(1))))
5 * (4 * (3 * (2 * 1)))
- ফলাফল: ৫ * ৪ * ৩ * ২ * ১ = ১২০
শেষ কথা
এইভাবে রিকার্সন ব্যবহার করে আমরা একটি সমস্যাকে ছোট ছোট ধাপে ভাগ করে সমাধান করতে পারি। ফ্যাক্টরিয়ালের ক্ষেত্রে, এই রিকার্সন পদ্ধতি খুবই কার্যকরী, কারণ এটি প্রতিটি ধাপকে কমিয়ে আনে এবং অবশেষে একটি নির্দিষ্ট ফলাফল প্রদান করে।