我是python的新手,想要使用分支和绑定来解决背包问题,当我增加递归限制时,我的代码运行正常,但是无论我设置的递归限制有多高,我的代码都适用于10000个元素
为什么此代码超过递归限制,Mcount值仅显示10000,这意味着它不会在其递归堆栈中存储超过10000个数据节点。我想我错过了一些东西,但无法弄清楚是什么。
def rep(i):
global taken
global Btaken
global Tvalue
global Tweight
global Bestimate
global Bvalue
global count
global Mcount
count+=1
Tweight -= items[i].weight
if Tweight>=0 :
taken[items[i].index-1] = 1
Tvalue += items[i].value
if i < len(items)-1:
rep(i+1)
else :
Btaken=taken*1
Bvalue = Tvalue
Tvalue -= items[i].value
taken[items[i].index-1]=0
Tweight += items[i].weight
Bestimate = best(i+1,Tweight)
if Bestimate+Tvalue > Bvalue :
if i < len(items)-1:
rep(i+1)
else :
Btaken=taken*1
Bvalue = Tvalue
if Mcount<count :
Mcount=count
count-=1