Posts

Recursion Algorithm (Bangla)

 Recursive Function( পুনরাবৃত্ত ফাংশন)

যদি একটা function নিজেকে নিজে call করে তাহলে তাকে বলে, Recursive function. এটাকে Recursive বলা হয় কারণ এটা পুনরাবৃত্তিমূলকভাবে নিজেকে call করে।

কেন আমরা রিকার্সন ব্যবহার করব?

Recursion একটি জটিল সমস্যা কে সিম্পল করতে পারে। তবে তুমি যদি একটি সহজ প্রবলেম সলভ করতে রিকার্সন ব্যবহার করো। তাহলে এটা তোমার Code কে আরও জটিল করবে ।

Recurtion Algorithm এর দুইটা অংশ রয়েছে:
1. Base Condition (A stopping Condition)
2. Call the function itself.

Factorial Function 

Factorial function একটি গণিতের ফাংশন, যা একটি পূর্ণসংখ্যার সব ধনাত্মক পূর্ণসংখ্যার গুণফল নির্ণয় করে। ধরা যাক n  একটি পূর্ণসংখ্যা, তাহলে এর ফ্যাক্টোরিয়াল n!  দ্বারা প্রকাশ করা হয়, এবং এটি 
n * (n-1) * (n-2) * ....... * 1 এর সমান।

উদাহরণ: 5! = 5 * 4 * 3 * 2 * 1 = 120
0! = 1 এবং 1! = 1

এটি n থেকে শুরু করে 1 পর্যন্ত সব পূর্ণ সংখ্যার গুণফল।

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)))
  • ফলাফল: ৫ * ৪ * ৩ * ২ * ১ = ১২০

শেষ কথা

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

About the author

MD Zakaria Hossen
Hi! I am Zakaria. I am the founder of Kochu Programmer. I want to spread tech knowledge to everyone.

Post a Comment