在python中达到的最大递归深度

时间:2019-04-12 08:22:18

标签: python-3.x

我已经开发了使用递归查找最大值和最小值的代码。但是,一旦列表增加到大于6个元素,就会引发运行时错误。

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

这是下面的代码:

def maxmin(a,i,j):
    if(i==j):
        return(a[i],a[j])
    elif(i==j-1):
        if(a[i]>a[j]):
            return(a[i],a[j])
        else:
            return(a[j],a[i])
    else:
        mid =int(i+j/2)
        value1 =maxmin(a,i,mid)
        value2 =maxmin(a,mid+1,j)
        if(value1[0]>value2[0]):
            max=value1[0]
        else:
            max=value2[0]
        if(value1[1]<value2[1]):
            min = value1[1]
        else:
            min=value2[1]
        return(max,min)

import sys
sys.setrecursionlimit(1000)
a =[2,3,90,0,-9,3]
maxmin(a,0,len(a)-1)

我还增加了递归限制,但仍然无法正常工作。

我通过递归尝试了另一个小的代码,堆栈大小为1000,并且工作正常。我认为代码中存在一些问题。上述程序占用的堆栈空间甚至不到100。

import sys
sys.setrecursionlimit(1000)
def fib(n, sum):
    if n < 1:
        return sum
    else:
        return fib(n-1, sum+n)

c = 900
print(fib(c, 0))

第二个程序运行正常,而第一个程序抛出错误。

1 个答案:

答案 0 :(得分:-1)

我不会使用递归:

Dense