猿问

写个快排玩玩结果遇到问题了

import random

def quickSort(L, low=0, high=None):
    i = low
    if high: 
        j = high
    else:
        j = len(L)-1
    if i >= j:
        return L
    key = L[i]
    while i < j:
        while i < j and L[j] >= key:
            j = j-1                                                             
        L[i] = L[j]
        while i < j and L[i] <= key:    
            i = i+1 
        L[j] = L[i]
    L[i] = key
    quickSort(L, low, i-1)
    quickSort(L, j+1, high)
    return L
L = []
for i in range(10):
    L.append(int(random.random()*10000))
    
print L
quickSort(L)

网上现成的快排算法,我稍微改了一下,但是运行的时候怎么就报错。我感觉没毛病啊。

  File "/Users/apple/workspace/crypto/crypto/quick_sort.py", line 20, in quickSort

    quickSort(L, low, i-1)

  File "/Users/apple/workspace/crypto/crypto/quick_sort.py", line 20, in quickSort

    quickSort(L, low, i-1)

  File "/Users/apple/workspace/crypto/crypto/quick_sort.py", line 20, in quickSort

    quickSort(L, low, i-1)

  File "/Users/apple/workspace/crypto/crypto/quick_sort.py", line 20, in quickSort

    quickSort(L, low, i-1)

RuntimeError: maximum recursion depth exceeded

时好时不好,超过python递归深度限制了?

tuitang
浏览 1449回答 3
3回答

孤独的小猪

你好,经过测试,你这段代码并没有问题,是可以正常跑出结果的,可能是运行环境问题吧。

凌舞青春

百度了一下你的错误,找到了这个,希望对你有用,其实很多东西百度都能搜到的。这段时间用Python写了一个爬冲脚本,在抓取页面采用广度优先遍历抓取。但是当遍历到900多时就会出现莫名其妙的错误,通过pdb调试发现是:RuntimeError: maximum recursion depth exceeded在网上查了,发现python默认的递归深度是很有限的,大概是900多的样子,当递归深度超过这个值的时候,就会引发这样的一个异常。解决的方式是手工设置递归调用深度,方式为import sys   sys.setrecursionlimit(1000000) #例如这里设置为一百万
随时随地看视频慕课网APP

相关分类

Python
我要回答