0

我有一小段代码,它使用如下所示的嵌套函数计算数字的阶乘:

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 上,程序只是返回而没有任何错误。

请您解释为什么会发生这种情况以及如何避免这个问题?

谢谢!

4

0 回答 0