রিকারসিভ ফাংশন হলো নিজে নিজে কল করে সমস্যা সমাধান করে। ফ্যাক্টোরিয়াল এর জন্য বেস কেস: 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