python中的递归超过10000个元素

时间:2014-03-17 06:43:47

标签: python recursion

我是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

0 个答案:

没有答案