当前位置: 首页 > 知识库问答 >
问题:

Python RuntimeError:超过最大递归深度

东方玉泽
2023-03-14

我对Python很陌生。我写了一个关于返回 x 在排序的重复元素数组 A 中的出现次数的函数:

def FindFirstIndex(A, low, high, x, n):
   low = 0
   high = len(A) - 1
   if low <= high:
      mid = low + (high - low) / 2
      if (mid == 0 or x > A[mid - 1]) and A[mid] == x:
          return mid
      elif x > A[mid]:
          return FindFirstIndex(A, (mid + 1), high, x, n)
      else:
          return FindFirstIndex(A, low, (mid - 1), x, n)        
   return -1


def FindLastIndex(A, low, high, x, n):
   low = 0
   high = len(A) - 1
   if low <= high:
       mid = low + (high - low) / 2
       if (mid == n - 1 or x < A[mid + 1]) and A[mid] == x:
          return mid
       elif x < A[mid]:
          return FindFirstIndex(A, low, (mid - 1), x, n)
       else:
          return FindFirstIndex(A, (mid + 1), high, x, n)           
   return -1

def COUNT(A, x):
   i = FindFirstIndex(A, 0, len(A) - 1, x, len(A))
   if i == -1:
      return i
   j = FindLastIndex(A, i, len(A) - 1, x, len(A))
   length = j - i + 1
   return length

错误是:运行时错误:超出最大递归深度。有人知道如何解决它吗?

共有2个答案

戈宏义
2023-03-14

确保您可以使用:

import sys
sys.setrecursionlimit(3000)

我相信 Python 的默认值是 1000,所以这应该可以。我提醒你,如果你尝试在一个非常大的列表上测试你的实现,python可能会崩溃,所以我鼓励你迭代地重新实现你的代码。

汪凌
2023-03-14

递归函数应该检查每个递归中的参数。还必须更改参数的值。否则永远不会结束。例如

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

它提供了n的阶乘

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

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

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

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

  • 我可以在spark submit yarn-cluster模式下提交org.apache.spark.examples.sparkpi示例jar,它成功了,但是pyspark中的下面的代码片段失败了,最大递归深度超过了错误。 在纱线集群模式下,我根据Pyspark的建议添加了pyspark_python env test.py 怎么解决这个? 运行Spark 1.6.0版 配置单元,版本1.1.0

  • 这是我的代码: 首先,我从一个列表中做一个二叉查找树,并检查它是否是一个二叉查找树。 给定列表的第一个元素是根节点,后续元素成为子节点。到叶节点。 例如,调用 的结果为: 结果是二叉搜索树,因为左子节点小于父节点,右子节点大于父节点。因此,调用<code>bst_child</code>的结果是<code>True</code>。 然后我添加了寻找二叉查找树深度的代码。通过对第一个列表排序,我制作