我需要在不使用“sort”函数的情况下使用递归对列表进行排序
def gensort(L):
""" sorts all numbers in the List from lowest to highest
L is a list
return value is the sorted list
"""
if len(L) == 0:
return goodlist
else:
goodlist = []
goodlist.append(min(L))
L.remove(min(L))
return gensort(L)
gensort([7, 9, 4, 3, 0, 5, 2, 6, 1, 8])
我想创建第二个列表并使用append和remove来填充它,但这是因为递归的本质;该列表在每次递归时都会被占用
您正在为gensort()的每次调用创建一个列表。不要只获取一个参数,而是获取两个参数(原始列表和新列表)。然后使用空列表作为默认值,如下所示:
这样,您可以在每次递归调用时保留列表
您不需要跟踪两个列表。以下工作很好:
下面是正在发生的事情:
在返回值中替换,可以得到:
其计算结果为
[1, 2, 3, 4]
相关问题 更多 >
编程相关推荐