我是Python的新手。我写了一个关于返回排序重复元素数组A中x的出现次数的函数:
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
错误是:RuntimeError:超出最大递归深度。 有人知道怎么解决吗?
答案 0 :(得分:0)
递归函数应检查每个递归中的参数。还必须更改参数的值。否则它永远不会结束。例如
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
提供n阶乘
答案 1 :(得分:0)
确定你可以使用:
LIMIT 1
我相信Python的默认值是1000,所以这应该做。我提醒你,如果你尝试在一个非常大的列表上测试你的实现,python可能会崩溃,所以我鼓励你迭代地重新实现你的代码