Skip to main content
 首页 » 编程设计

python之如何在 Python 中定义一个递归函数来合并两个排序列表并返回一个递增顺序的新列表

2025年05月04日13mate10pro

我想定义一个递归函数来合并两个排序列表(这两个列表已排序)并返回一个新列表,其中包含两个参数列表中的所有值,并且顺序递增。我知道我可以使用 list.extend() 和 sorted() 来获取它,但我不想使用它们。我只想做一些关于递归的练习。

例如:

if a = [1,2,3,4], b = [5,6,7,8] 
 
print(function(a,b)) 
 
[1,2,3,4,5,6,7,8] 

这是我的代码:

def combine(a:list, b:list):     
    alist = [] 
    if a == [] and b == []: 
       return alist 
    if a != [] and b == []: 
       return alist + a 
    if a == [] and b != []: 
       return alist + b      
    if a != [] and b != []: 
       if a[0] <= b[0]: 
          alist.append(a[0]) 
          return combine(a[1:], b) 
       if a[0] > b[0]: 
          alist.append(b[0]) 
          return combine(a, b[1:]) 
    return alist 

我总是得到 [5,6,7,8]。我应该怎么做才能得到[1,2,3,4,5,6,7,8]?

请您参考如下方法:

只是一个更简单的版本:

def combine(a, b): 
    if a and b: 
        if a[0] > b[0]: 
            a, b = b, a 
        return [a[0]] + combine(a[1:], b) 
    return a + b 

测试:

>>> combine([1,3,6,8], [2,4,5,7]) 
[1, 2, 3, 4, 5, 6, 7, 8]