当前位置: 首页 > 面试题库 >

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

终弘厚
2023-03-14
问题内容

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

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:比较中超出了最大递归深度


问题答案:

尝试更换:

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),直到最大递归深度错误为止)。



 类似资料:
  • 我不明白为什么我会得到这个最大深度错误。iam试图使用bst递归方法在数组中查找数字索引,下面是我的代码 任何人都可以告诉我代码块中发生了什么 错误块: PS C:\Users\admin\Desktop\DSA

  • 问题内容: 我从星期一开始使用Python进行编程。我很喜欢学习它。但是我一直试图了解如何在tkinter菜单之间切换时避免递归!我确信这是一个非常基本的问题,感谢您宽容我对此主题的无知,但我无法在其他地方找到答案。 我现在正在做的最终是给我错误:RuntimeError:调用Python对象时超出了最大递归深度 这是我目前正在使用的模式。更新:下面的代码现在是完整的隔离副本,再现了我面临的问题!

  • 我对Python很陌生。我写了一个关于返回 x 在排序的重复元素数组 A 中的出现次数的函数: 错误是:运行时错误:超出最大递归深度。有人知道如何解决它吗?

  • 问题内容: 我使用以下代码解决了Euler项目的问题10,该代码通过强力工作: 这三个功能的工作方式如下: isPrime 检查数字是否为质数; primeList 返回一个列表,其中包含一组在一定范围内且限制为“ n”的素数,并且; sumPrimes 对列表中所有数字的值求和。(不需要最后一个功能,但是我喜欢它的清晰度,特别是对于像我这样的初学者。) 然后,我编写了一个新函数 primeLis

  • 问题内容: 我正在尝试从Django项目网站上的第1篇教程学习Django。我可能会缺少一些明显的东西,但是在遵循所有说明后,当我运行命令时 我在请求的结尾处得到了错误消息,以寻求帮助(为简便起见,我仅将错误消息的重复行的前几行发布)。 这是我在网上找到的一些解决方案/建议,但对我没有帮助。 1)sys.setrecursionlimit(1500)。 这对我不起作用。 2)。DjangoRunt

  • 我似乎不知道如何使工作。如何修复此问题,使矩形继续向下移动?

  • 我试图在这个简单的类中做getter setter, 看起来很简单明了,但不知何故它不起作用,我错过了什么,帮我找到我出错的理解。 我得到以下错误。

  • 我正在使用Python进行合并排序。 我已经勾选了< code >合并功能。阵列融合得很好。 但在函数中,将出现错误:--- RuntimeError:超过最大递归深度。 运行时错误回溯(最近一次调用)在 () 63 打印(arr[i]), 64 --- 在合并排序(arr,l,r)53 m=l(r-1)/2 54合并排序(ar,l,m)--- 可能的原因是什么?