如何在python中正确地递归?

2024-04-19 20:13:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我们有两个int列表,我要做的就是检查列表2中的第一个int是否存在于列表1中。如果是这样,那么取列表1的第一个int的反。我试图使用递归,但是,我得到一个错误,说“TypeError:'int'object is unsubscriptable”。救命啊?你知道吗

def search(l1,l2):
    if l1 == [] and l2 == []:
        return []
    elif l1[0] == l2[0]:
        return [-(l1[0]),search(l1[1:],l2[1:])]
    else:
        return search(l1[1:],l2[0])

print search([1,2,1],[1,3,4])

Tags: andl1列表searchreturnifobjectis
1条回答
网友
1楼 · 发布于 2024-04-19 20:13:08

递归函数必须终止。只有当两个列表都为空时,函数才会终止,这只有在第一个elif始终命中时才会发生,如果最后一个elif出现,则会有长度不等的列表(同样,如果确保将列表作为参数而不是整数传递)。你知道吗

因此,第一个elif建议您检查l1的第一个元素是否等于l2的第一个元素,l1的第二个元素是否等于l2的第二个元素,l1的第n个元素是否等于l2,依此类推。然而,第二个建议检查l1中的任何元素是否等于原始l2的第一个元素。如果您只是在l1中寻找l2[0]的列表成员身份,那么您可以做得容易得多。你知道吗

所以看来你需要更明确地说明你想要回到这里。当您试图将一个整数(在最后一个elif中)传递给需要列表的函数搜索时,当前的函数无法工作。你知道吗

相关问题 更多 >