Saya memiliki fungsi rekursif ekor ini di sini:
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))
Ia bekerja hingga n=997, lalu rusak dan dimuntahkan a RecursionError: maximum recursion depth exceeded in comparison. Apakah ini hanya stack overflow? Apakah ada cara untuk menyiasatinya?
line <n>, in <module>in stack traces) dan kode ini membutuhkan 2 frame stack n=1(karena case dasarnya n < 1, jadi untuk n=1itu masih berulang). Dan saya kira batas rekursi tidak inklusif, seperti "kesalahan ketika Anda menekan 1000" tidak "kesalahan jika Anda melebihi 1000 (1001)". 997 + 2kurang dari 1000 sehingga tidak berfungsi 998 + 2karena mencapai batas.
recursive_function(997)berfungsi, rusak pada 998. Ketika Anda menyebutnya recursive_function(998)menggunakan 999 frame stack dan 1 frame ditambahkan oleh juru bahasa (karena kode Anda selalu dijalankan seolah-olah itu bagian dari modul level atas), yang membuatnya mencapai batas 1000.