Python 定义接受两个列表的递归函数

Python 定义接受两个列表的递归函数,python,recursion,Python,Recursion,我试图解决以下问题: 编写一个递归函数:isEqual(list1,list2),该函数返回一个布尔值,指示 两个列表相等,无需直接比较list1==list2。您可以只比较 列出并测试各个列表元素是否相等。[提示:如果两个列表的长度相同,则它们是“相等”的 每个对应的元素都是相同的] 到目前为止,这就是我所拥有的,但我被困住了。有人帮忙吗 def isEqual(list1, list2): if len(list1) and len(list2) < 1: re

我试图解决以下问题:

编写一个递归函数:
isEqual(list1,list2)
,该函数返回一个布尔值,指示 两个列表相等,无需直接比较
list1==list2
。您可以只比较 列出并测试各个列表元素是否相等。[提示:如果两个列表的长度相同,则它们是“相等”的 每个对应的元素都是相同的]

到目前为止,这就是我所拥有的,但我被困住了。有人帮忙吗

def isEqual(list1, list2):
    if len(list1) and len(list2) < 1:
        return True
    elif len(list1) == len(list2) and list1[-1] == list2[-1]:
        isEqual(list1[:-1], list2[:-1]) + isEqual 
        return True
    else:
        return False
def isEqual(列表1、列表2): 如果len(列表1)和len(列表2)<1: 返回真值 elif len(list1)==len(list2)和list1[-1]==list2[-1]: isEqual(列表1[:-1],列表2[:-1])+isEqual 返回真值 其他: 返回错误 这不起作用:

if len(list1) and len(list2) < 1:
因为空列表为false(非空列表为true)

你的想法是对的,但你的执行是错误的。您正确地调用了两个余数列表上的函数,但是您正在做一些不需要做的奇怪的事情

isEqual(list1[:-1], list2[:-1]) + isEqual 
return True
应该是

return isEqual(list1[:-1], list2[:-1])
因为如果列表长度相同,且尾随元素相等,则当列表的
list[:-1]
相等时,列表相等


作为旁注,大多数时候人们会比较第一个元素,然后是第二个元素,依此类推。有什么特别的原因让你从列表的末尾开始吗?

“写一个…”是最糟糕的提问方式之一。“我被卡住了”。。。确切的意思是什么?如果len(list1)和len(list2)<1:做了什么,你认为
isEqual(list1[:-1],list2[:-1])+isEqual做了什么?作为一个旁注:教给这样简单的迭代任务使用递归应该受到惩罚。
if not list1 and not list2:
isEqual(list1[:-1], list2[:-1]) + isEqual 
return True
return isEqual(list1[:-1], list2[:-1])