前言:这是我之前在我的数据结构和算法课上参加的一次考试。在
在这个函数中,返回一个已排序的项。例如,给定[1,2,3,4,5],[0,2,3,5,8],函数应该返回[2,3,5]。函数必须以某种方式使用递归。在
def merge(L1, L2):
if L1 == []:
return L2
elif L2 == []:
return L1
elif L1[0] <= L2[0]:
return L1[:1] + merge(L1[1:], L2)
else:
return L2[:1] + merge((L1, L2[1:])
我将函数修改为:
^{pr2}$我使用基本的if语句来推进列表,以确保每个列表中的每个元素都是相互检查的。已经很晚了,我之前的代码一直返回[2,3,5,8],因为,我最初有:
if L1 == []:
return L2
elif L2 == []:
return L1
当L1耗尽时,它将返回L2的其余部分。然后我重新键入代码,意外地输入了:
if L1 == []:
return L1
elif L2 == []:
return L2
而且成功了!输出是[2,3,5],但是,这对我来说没有意义
我的问题是:
为什么前两个返回耗尽列表的if语句会给出输出[2,3,5]?在
为什么返回空列表会脱离递归函数?在
最后,如果我的列表在递归函数中用完了,有没有办法打破if语句链?在
因为当其中一个列表中没有元素时,一个空列表和另一个列表的其余部分之间就没有什么共同之处了。在
return L1
和{你想找到两个列表的交集。因此,如果其中一个列表为空,则需要返回一个空列表,因为交集将为[]。在
输出返回[2,3,5],因为上一个递归调用具有
因此,根据上述声明,唯一需要添加的元素将是两个列表的共同元素。
^{pr2}$也可以将语句修改为:
相关问题 更多 >
编程相关推荐