gpt4 book ai didi

python - 比较时超过最大递归深度

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:05 25 4
gpt4 key购买 nike

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

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())))

阶乘函数似乎工作正常。但是,当我尝试查找两个数字的组合时,为什么它会给我一个 maximum recursion depth exceeded in comparison error?阶乘函数是否有问题,因为这似乎是错误的来源?

这是我得到的错误:

builtins.RuntimeError: maximum recursion depth exceeded in comparison

最佳答案

对于数字的阶乘这样简单的函数,您应该尽量避免递归。递归真的很强大,但有时它会无缘无故地被过度使用。

这是阶乘函数迭代版本的代码:

def fact(n):
result = 1
for i in range(2, n + 1):
result *= i
return result

请注意 Maxime 在之前的回答中所说的,这正是您遇到的问题:您的函数没有考虑 0 的阶乘。

关于python - 比较时超过最大递归深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com