আমার এখানে এই পুচ্ছ পুনরাবৃত্তির কাজ রয়েছে:
def recursive_function(n, sum):
if n < 1:
return sum
else:
return recursive_function(n-1, sum+n)
c = 998
print(recursive_function(c, 0))
এটি পর্যন্ত কাজ করে n=997
, তারপরে এটি কেবল ভেঙে যায় এবং এটিকে থুথু দেয় RecursionError: maximum recursion depth exceeded in comparison
। এটি কি কেবল স্ট্যাকের ওভারফ্লো? এর আশপাশে যাওয়ার কি কোনও উপায় আছে?
line <n>, in <module>
স্ট্যাক ট্রেসগুলিতে) এবং এই কোডটির জন্য 2 স্ট্যাক ফ্রেম লাগে n=1
(কারণ বেস কেসটি n < 1
তাই n=1
এটি এখনও পুনরাবৃত্তি করে)। এবং আমি অনুমান করি যে পুনরাবৃত্তির সীমাটি অন্তর্ভুক্ত নয়, যেমন এটি "ত্রুটি আপনি যখন 1000 কে" আঘাত করেন তখন "নয়" ত্রুটি আপনি যদি 1000 (1001) ছাড়িয়ে যান "। 997 + 2
1000 এর চেয়ে কম তাই এটি কাজ 998 + 2
করে না কারণ এটি সীমাটিকে হিট করে।
recursive_function(997)
কাজ করে, এটি বিরতি দেয় 998
। আপনি যখন কল করেন তখন recursive_function(998)
এটি 999 স্ট্যাক ফ্রেম ব্যবহার করে এবং দোভাষী দ্বারা 1 ফ্রেম যুক্ত করা হয় (কারণ আপনার কোডটি সর্বদা এটি শীর্ষ স্তরের মডিউলের অংশ হিসাবে চালিত হয়) যা এটি 1000 সীমাতে পৌঁছে দেয়।