我想计算数组 A = [2, 1, 1, 4]
中加和为 2
的子集数量。共有 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])
。是否有任何方法可以修复它,同时仍然使用递归?