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])