下面的问题可能是微不足道的,但我不是编程Maven。
使用语言:Python3
问题是:您已获得一个列表"a =[a1,a2,a3,a4]"。其目的是检查一个特定的数字(例如"S")是否可以表示为列表"a"中数字的总和。请注意,可以根据需要多次从列表中获取数字。
这个问题被称为"Howsum"。
我的代码:
def hs_slow(tsum,ar):
if tsum==0:
return []
if tsum<0:
return None
for i in ar:
ntsum=tsum-i
hsResult=hs_slow(ntsum,ar)
if hsResult!=None:
hsResult.append(i)
return hsResult.append(i)
return None
我的代码逻辑:
如果'tsum'对于一组特定的数字是负数,那么这不会得到正确的数字,因此我们应该得到一个null返回值。
如果'tsum'是零,这意味着,我们已经从列表中找到了一组特定的数字,这组数字会导致正确的总和。因此,我们应该得到这组数字作为结果。为此,我返回一个空数组,即当'0'命中时[]。然后,数字'i'应该贡献给正确的数字列表。因此,apperbd它的结果。
不知何故,如果我有hs_slow(3,[2,3]),这在基本层面上是有效的,但对于hs_slow(7,[2,3]),它失败了,虽然对于前一种情况我得到了[3],但对于后一种情况我得到了[]。
我不明白,为什么除了基本的情况外,没有附加这个列表。
帮助将受到高度赞赏。如果你能解释问题就更好了。
先谢了。
请注意,此问题与中描述的问题类似:
Finding a sequence from given numbers that sum to given value?
但我需要弄清楚我的方法出了什么问题。
1条答案
按热度按时间rta7y2nd1#
hsResult='+str(hsResult)+'\n'行不是有效的Python语法。看起来您试图连接字符串,但没有正确使用+运算符。
hsResult.append(i)行缩进不正确。它应该在if块内部,而不是在其之后。
返回的hsResult.append(i)行将无法按预期工作。append方法在适当的位置修改列表,并且不返回任何内容,因此return语句将不会返回修改后的列表。相反,您可以在附加元素后返回hsResult。