小编典典

比较中超过了最大递归深度

python

我编写了这段代码来计算组合数量:

def fact(n):
    return 1 if(n == 1) else n * fact(n - 1)

def combinations(n,k):
    return fact(n)/((fact(n - k) * fact(k)))

while(True):
    print(combinations(int(input()), int(input())))

阶乘函数似乎可以正常工作。但是,当我尝试找到两个数字的组合时,为什么在比较错误中却给了我最大的递归深度?阶乘函数有什么问题,因为那似乎是错误的根源?

这是我得到的错误:

builtins.RuntimeError:比较中超出了最大递归深度


阅读 208

收藏
2021-01-20

共1个答案

小编典典

尝试更换:

def fact(n):
    return 1 if(n == 1) else n * fact(n - 1)

至:

def fact(n):
    return 1 if(n <= 1) else n * fact(n - 1)

因为如果您传递2个相同的数字,则将尝试计算fact(0)(将调用fact(-1)fact(-2),直到最大递归深度错误为止)。

2021-01-20