Burada bu kuyruk özyinelemeli işlevi var:
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))
Kadar çalışır n=997, sadece kırılır ve tükürür a RecursionError: maximum recursion depth exceeded in comparison. Bu sadece bir yığın taşması mı? Etrafında dolaşmanın bir yolu var mı?
line <n>, in <module>yığın içinde eser miktarda) ve bu kod 2 yığın çerçeveleri alır n=1(temel durum olduğu için n < 1çok için, n=1hala recurses). Ve sanırım özyineleme sınırı kapsayıcı değildir, çünkü "1000'e çarptığınızda hata" 1000 (1001) değerini aşarsanız "değil" hatası. 997 + 21000'den az olduğu için işe yarıyor 998 + 2çünkü sınıra ulaşıyor.
recursive_function(997)çalışır, kırılır 998. Aradığınızda recursive_function(998)999 yığın çerçeve kullanır ve yorumlayıcı tarafından 1 çerçeve eklenir (çünkü kodunuz her zaman üst düzey modülün parçasıymış gibi çalışır), bu da 1000 sınırına ulaşmasını sağlar.