কম্পিউটার টিউটোরিয়াল

পাইথনে রিকারসিভ ফাংশন লিখে ফ্যাক্টোরিয়াল বের করা

রিকারসিভ ফাংশন হলো নিজে নিজে কল করে সমস্যা সমাধান করে। ফ্যাক্টোরিয়াল এর জন্য বেস কেস: factorial(1) = 1।

কোড

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n - 1)

print("factorial(6) =", factorial(6))   # 720
print("factorial(15) =", factorial(15)) # 1307674368000

ব্যাখ্যা

  • n == 1 — বেস কেস (রিকারসন রুকতে হয়)।
  • n * factorial(n-1) — রিকারসিভ কেস (সাব-প্রব্লেমে রিডিউস)।
  • প্রতিটি কল স্ট্যাকে নতুন ফ্রেম তৈরি করে।

সতর্কতা

  • পাইথনের ডিফল্ট রিকারসন লিমিট ~১০০০ (sys.getrecursionlimit())।
  • বড় n-এর জন্য RecursionError আসতে পারে।
  • সমাধান: iterative versão বা functools.lru_cache দিয়ে মেমোইজেশন।

ইটেরেটিভ সংস্করণ (আরো কার্যকর)

def factorial_iter(n):
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result
  1. পাইথন জেনারেটর লেখার পদ্ধতি

  2. পাইথন ইন্সারশন সর্ট: ধাপে ধাপে বাস্তবায়ন গাইড

  3. Matplotlib-এ মাল্টিভ্যারিয়েট ফাংশন প্লট করুন

  4. পাইথনে রিকারসিভ ফাংশন তৈরি করার পদ্ধতি