为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

tuitang 2017-02-10 16:52:36
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递归深度限制了?
查看完整描述

3 回答

?
孤独的小猪

TA贡献232条经验 获得超302个赞

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

//img1.sycdn.imooc.com//58a29a570001b41c11410668.jpg

查看完整回答
反对 回复 2017-02-14
?
凌舞青春

TA贡献3条经验 获得超1个赞

百度了一下你的错误,找到了这个,希望对你有用,其实很多东西百度都能搜到的。

这段时间用Python写了一个爬冲脚本,在抓取页面采用广度优先遍历抓取。但是当遍历到900多时就会出现莫名其妙的错误,通过pdb调试发现是:
RuntimeError: maximum recursion depth exceeded

在网上查了,发现python默认的递归深度是很有限的,大概是900多的样子,当递归深度超过这个值的时候,就会引发这样的一个异常。
解决的方式是手工设置递归调用深度,方式为

import sys  
sys.setrecursionlimit(1000000) #例如这里设置为一百万

查看完整回答
反对 回复 2017-02-10
  • tuitang
    tuitang
    递归深度一高 python进程就崩了。。。
  • 3 回答
  • 0 关注
  • 1448 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信