2017-02-11 25 views
-2
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という再帰関数を書いています。 2つのリスト引数が渡されます(それぞれは同じタイプの値を含み、それぞれが非降順でソートされます)。両方の引数リストからすべての値を含む新しいリストを降順で返します。 2つのリストを降順で1つにマージする

コール

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

返します。あなたがそれらをマージしたい場合:

if l1[0]<= l2[0]: 
    return [l1[0]] + merge(l1[1:],l2) 
else: 
    return [l2[0]] + merge(l1,l2[1:]) 

別のコメントをあなたはsorted - コール(それは必要ありませんすでにソートされている)を返します。

関連する問題