运行时错误,排序功能而不使用.sort

时间:2014-03-17 10:07:10

标签: python

我应该编写排序功能。限定 一个函数排序列表,它接收一个列表并返回按升序排序的列表。 (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]

2 个答案:

答案 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

否则它会永远自称。结果就是你看到的错误。