Python变量在通过函数传递时不能更新

2024-10-01 15:37:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面关于子集和问题的函数

def findFourPlus(itemCount, seq, goal):
    goalDifference = float("inf")
    closestPartial = []
    subset_sum(itemCount, seq, goal, goalDifference, closestPartial, partial=[])
    print(closestPartial)


def subset_sum(itemCount, seq, goal, goalDifference, closestPartial, partial):
    s = sum(partial)

    # check if the partial sum is equals to target
    if(len(partial) == itemCount):
        if s == goal:
                print("FOUND YAA")
                print(partial)

        else:
            if( abs(goal - s) < goalDifference):
                #print(abs(goal-s), goalDifference, closestPartial)
                goalDifference = abs(goal - s)
                closestPartial[:] = partial
                #print(abs(goal-s), goalDifference, closestPartial)

    for i in range(len(seq)):
        n = seq[i]
        remaining = seq[i+1:]
        subset_sum(itemCount, remaining, goal, goalDifference, closestPartial, partial + [n])

我以前的问题是closestPartial没有更新(返回一个空列表),即使我试图在subset\u sum中对其进行变异。现在已经解决了。现在我有一个类似的问题,我的目标差距也没有更新,因为它是永远返回无限。你知道吗

在subset_sum函数中,我试图更新goalDifference,当我打印出一些测试输出时,它看起来确实在更新,但我假设每次通过递归调用时,值都会再次丢失,每次都会将goalDifference恢复为无穷大。你知道吗

我能做些什么来解决这个问题?你知道吗


Tags: 函数lenifdefabspartialseqsum

热门问题