我有一个超过10000个项目的列表,使用递归,我想迭代所有可能的选择组合,从第一个项目开始为其选择和非选择(2个分支),然后为每个分支决定第二个项目,以此类推,直到最后一个项目,以DFS的方式。 我使用这段代码进行优化,大多数分支没有迭代,但至少有1片叶子会到达,以便找到最好的
问题是我用python编写了一个递归代码,在将递归限制更改为10000之后,它可以很好地处理1000个元素,但是无论我增加多少递归限制,我都无法使它适用于10000个元素
我对python还不熟悉,感觉我在代码中犯了一些空间分配错误,它不起作用。请在任何修复或替代方案中帮助我
这是我的递归函数
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
在
Mcount值现在也正确显示了当前调用(或保持)中的函数数(根据dfs树的高度),那么为什么当我将递归限制增加到15000个以上时,我仍然不能使用它来交互10000个项目,我需要一些关于python内存限制的指导。在
目前没有回答
相关问题 更多 >
编程相关推荐