我应该编写排序功能。限定 一个函数排序列表,它接收一个列表并返回按升序排序的列表。 (4分) 注意:您的代码应该使用前面定义的插入列表函数。 使用我之前定义的变量:
def search(x , seq):
for i in seq:
if x > max(seq):
return len(seq)
elif x < min(seq):
return 0
return search(x, seq[:-1])
def insert_tup(x, tup):
searchtuple = search(x, tup)
ontheleft = tup[:searchtuple]
ontheright = tup[ searchtuple:]
altogether = ontheleft + (x,) + ontheright
return altogether
def insert_list(x, lst):
A = search(x, lst)
lst.insert(A, x)
return lst
我做了一次试验
def sort_list(lst):
result = []
for i in lst:
result += [i]
return insert_list(result[0], lst)
但是我一直收到运行时错误 搜索中的文件“”,第7行 返回搜索(x,seq [: - 1])
希望输出
sort_list([5, 1, 9])
[1, 5, 9]
答案 0 :(得分:0)
您正在递归调用search()方法,并且永远不会超出此循环。我希望这会引发RuntimeError: maximum recursion depth exceeded
例外。
Python有一个递归限制来防止无限递归。仅供参考,您可以通过sys.setrecursionlimit
修改递归限制 - 但这不是您应该做的事情。
相反,你可以通过迭代重写算法来解决这个问题。
我还建议您阅读Python sorting wiki,因为这演示了使用内置sorted()
函数和列表方法sort()
对事物进行排序的pythonic方法。你不需要重新发明轮子。
答案 1 :(得分:0)
您需要一个基本案例来递归。类似的东西:
if len(seq)==1:
return seq
否则它会永远自称。结果就是你看到的错误。