为什么这个列表在递归发生时变成 NoneType?

Why is this list becoming NoneType when a recursion happens?

所以我正在尝试编写此代码来查找列表中是否存在数字的子集,这些数字的子集汇总为也传入的结果。每当我 运行 我的代码但是由于某种原因我的当前列表变量变为 NoneType。这是我得到的错误:

AttributeError: 'NoneType' object has no attribute 'append' 

这是我的代码:

def resultinSubset(t,s):
    currentlist=[]
    currentsum=0
    def recresultinSubset(t,s,i,currentsum,currentlist):
        if currentsum == t:
            return True
        if i == (len(s)):
            return False
        newlist=currentlist.append(s[i])
        newsum=int(currentsum)+int(s[i])
        including=recresultinSubset(t,s,i+1,newsum,newlist)
        notincl=recresultinSubset(t,s,i+1,currentsum,currentlist)
        return including + notincl
    return recresultinSubset(t,s,0,currentsum,currentlist)
    print(currentlist)                                  
print(resultinSubset(6, [1,2,3])) 
newlist=currentlist.append(s[i])

这设置了 newlist = None,因为 append() 没有 return 值。如果您想要一个附加了额外值的新列表,请使用:

newlist = currentlist + [s[i]]

请注意,每次递归调用都创建一个新列表效率很低。修改算法以就地操作单个列表是值得的。