我想计算数组A = [2, 1, 1, 4]
的子集的个数,其和为2
.有两种方式:(A[0])
和(A[1], A[2])
.我的计算代码是:
def W(number, index):
A = [2, 1, 1, 4]
if number < 0 or index < 0:
return 0
elif number==0:
return 1
else:
return W(number, index-1) + W(number - A[index], index)
现在,当我用W(2,3)
调用函数时,得到的是4
,而不是2.我的问题是,我的代码还计算了可能性(A[1], A[1])
和(A[2], A[2])
.在仍然使用递归的情况下,有没有办法修复它?