python-3.x 递增递归失败,原因是:进程已完成,退出代码为-1073741571(0xC 00000 FD)[重复]

ipakzgxi  于 2023-01-18  发布在  Python
关注(0)|答案(1)|浏览(249)
    • 此问题在此处已有答案**:

Process finished with exit code -1073741571(2个答案)
Function for factorial in Python(10个答案)
Can you explain this recursive "n choose k" code to me?(3个答案)
12小时前关闭。

import sys
sys.setrecursionlimit(1000000000)

def F(n):
    if n == 1:
        return 1
    if n > 1:
        return n * F(n - 1)
print(F(2023)/F(2020))

当递归增加setrecursionlimit时,将返回以下错误。
进程结束,退出代码为-1073741571(0xC00000FD)
但是如果不增加递归,这段代码就不起作用。
我该怎么修呢?

oknwwptz

oknwwptz1#

由于阶乘小于2500,可以将递归增加到2500:

import sys
sys.setrecursionlimit(2500)

def F(n):
    if n == 1:
        return 1
    if n > 1:
        return n * F(n - 1)

但是,当你运行上面的代码,你会得到:

链接到文档:文件
因此,您必须增加限制:

import sys
sys.set_int_max_str_digits(0)

现在,您的代码将运行:

print(F(2023)/F(2020))

8266912626.0

或者,还有另一种方法;
你可以使用数学模块中内置的阶乘。但是,你必须增加整数的限制:

import sys
sys.set_int_max_str_digits(0)
from math import factorial as F
print(F(2023)/F(2020))

#8266912626.0

相关问题