如果給出一個子數組[1,2,3,4]和一個數值8.我想返回子數組[1,3,4]。我在我的代碼中有一個錯誤,我不確定如何修復它,因爲我是遞歸的新手。下面我有我的Python代碼。我正在找回[3,4]的值來顯示這顯然不是正確的答案。我如何獲得數組中的第一個元素?找到在Python中求和給定值的子數組
def main():
s = 0
a = [1,2,3,4] # given array
sa = [] # sub-array
w = 8 # given weight
d = False
d, sa = checkForWeight(a,w,s,d,sa)
print sa
def checkForWeight(a,w,s,d,sa):
l = len(a)
s += a[0]
sa.append(a[0])
if s == w:
d = True
return d, sa
else:
try:
d, sa = checkForWeight(a[1:],w,s,d,sa)
if d != True:
d, sa = checkForWeight(a[2:],w,s,d,sa)
else:
return d, sa
except:
sa = [] # i put this here because I want to erase the incorrect array
return d, sa
不相關的問題:使用值TRUE;以及「假」(布爾值)而不是字符串「真」和「假」。 –
也不直接相關:您始終使用[0]作爲解決方案的一部分。如果解決方案不包括它會怎樣? –
你是對的!當我第一次打電話時,我應該將其添加到我的功能中。 – questionier