我有一个超过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内存限制的指导。