python 快速排序 runtime error maximum recursion exceed

wodeceshi 2014-04-01 12:48:36
如题。。我在用快速排序排列一个有10万个字符串的list,递归大约1400次时出现了这个错误。查了资料据说可以使用sys.setrecursionlimit(10000000)解决。 但是我设置了以后还是只递归了1400多次就又出错了。。请问应该如何解决呢。。。
...全文
279 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wodeceshi 2014-04-01
  • 打赏
  • 举报
回复
谢谢楼上两位大哥!我的问题解决了。。我的环境是netbeans+python插件,不知道是不是编译器抽了。。。研究了一天的问题重启了一下IDE就好了= =。。真是无语啊 不过两位给我的资料我还是研究了一下,真心感谢了!!
panghuhu250 2014-04-01
  • 打赏
  • 举报
回复
检查你的代码是否有死循环。100000个数快排的递归深度不会有这么长。下面的recur_depth模拟计算n个数快排的递归深度,模拟500000次得到的最大递归深度也才60次。
In [323]: def recur_depth(n):
     ...:     depth = 0
     ...:     while n>1:
     ...:         n = n*(0.5 + random.random()/2)
     ...:         depth += 1
     ...:     return depth

In [324]: max_recurrsion_depth_in_500000_times = max(recur_depth(100000) for _ in xrange(500000))

In [325]: max_recurrsion_depth_in_500000_times
Out[325]: 60
iasky 2014-04-01
  • 打赏
  • 举报
回复
可以使用尾递归调用 http://code.activestate.com/recipes/474088-tail-call-optimization-decorator/ 例如这个 @tail_call_optimized

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧