我有一小段代码,它使用如下所示的嵌套函数计算数字的阶乘:
import sys
rec_limit = 10 ** 6
num = 10 ** 5
sys.setrecursionlimit(rec_limit)
def factorial(n):
if n == 1:
return 1
ans = n * factorial(n - 1)
return ans
print(factorial(num))
对于较小的值num
,程序可以正常工作,但对于非常大的值,例如程序中的值,会抛出递归限制。为了避免这种情况,我使用了sys.setrecursionlimit()
方法来增加这个限制。但是,现在我Segmentation fault (core dumped)
在 Linux 上收到一个错误,而在 Windows 上,程序只是返回而没有任何错误。
请您解释为什么会发生这种情况以及如何避免这个问题?
谢谢!