我已经开发了使用递归查找最大值和最小值的代码。但是,一旦列表增加到大于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))
第二个程序运行正常,而第一个程序抛出错误。
答案 0 :(得分:-1)
我不会使用递归:
Dense