def merge (l1,l2):
if l2 == [] and l2 == []:
return []
if l1 == []:
return sorted(l2)
if l2 == [] :
return sorted(l1)
if l1[0]<= l2[0]:
return merge(l1[1:],l2)
else:
return merge(l1,l2[1:])
我正在编写一个名为merge的递归函数;它传递两个列表参数(每个都保证包含相同类型的值,每个都按非降序排序)它返回一个新列表,其中包含来自两个参数列表的所有值,以非降序排列。
致电merge([0,1,2,3,4],[5,6,7,8,9])
会返回[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
但我的函数返回[5, 6, 7, 8, 9]
答案 0 :(得分:0)
您需要保持最小元素:
if l1[0]<= l2[0]:
return [l1[0]] + merge(l1[1:],l2)
else:
return [l2[0]] + merge(l1,l2[1:])
另一条评论:如果你想要它们合并,你就不需要sorted
- 调用(如果一个iterable为空,它就应该被排序)。