使用递归来编写包含包含列表 seq 和值项的函数。如果 item 是 seq 的元素,则函数应该产生 True ,否则,将产生 False 。序列中的项目可以是任何类型的数据,即。浮动,列表/数组,元组等。
到目前为止,我已经拥有了:
def contains (seq, item):
if len(seq) == 0:
return True
elif len(seq) == 1 and (seq[0] == item):
return True
else:
if (seq[0] == item):
return contains(seq [1:], item)
else:
return False
print (contains([10, 12, 13, 14 ], 10))
答案 0 :(得分:1)
您在这里的逻辑大部分是后退的,但不是完全倒退的。
首先,对于一个空列表,您将返回True
。这是错误的-空列表不包含任何内容,因此它不包含item
。
接下来,对于唯一元素为item
的size-1列表,返回True
。没错可能不是必要的测试,但正确。
接下来,如果第一个元素是item
,则检查列表的其余部分。这是错误的-包含item
的列表以及包含item
的其他内容。
最后,对于其他任何内容(第一个元素不是item
的多元素列表),您将返回False
。这是错误的-包含一堆东西的列表,其中一些不是item
,可能仍然包含item
。在这里,您需要检查列表的其余部分。
如果您以正确的逻辑将错误的逻辑转换为代码,则代码将起作用。