繁体   English   中英

快速排序 Python 程序返回 RecursionError:比较中超出了最大递归深度

[英]Quicksort Python Program returns RecursionError: maximum recursion depth exceeded in comparison

所以我在 Python 中写了一个快速排序算法,我一直收到这个错误(下)

Traceback (most recent call last):
File "hw2.py", line 5, in print
print(input[i])
File "hw2", line 5, in print
print(input[i])
File "hw2", line 5, in print
print(input[i])
[Previous line repeated 996 more times]
File "hw2", line 4, in print
  for i in range(0, INPUT_SIZE):
RecursionError: maximum recursion depth exceeded in comparison

知道有什么问题吗? 我已经在我的代码中添加了递归限制,但它没有做任何事情(下面的代码)任何帮助将不胜感激:)

import sys
sys.setrecursionlimit(15000)

def print(input):
    for i in range(0, INPUT_SIZE):
        print(input[i])
    print("\n")

def partition(input, p, r):
    pivot = input[r]

    while(p < r):
        while(input[p] < pivot):
            p = p + 1
        while(input[r] > pivot):
            r = r - 1
        if(input[p] == input[r]):
            p = p+1
        elif(p < r):
            tmp = input[p]
            input[p] = input[r]
            input[r] = tmp
    return r

def quicksort(input,p,r):
    if(p<r):
        j = partition(input,p,r)
        quicksort(input,j-1)
        quicksort(input,j+1,r)



if __name__ == '__main__':
    INPUT_SIZE = 10
    input = [500,700,800,100,300,200,900,400,1000,600]
    print("Input: ")
    print(input)
    quicksort(input, 0, 9)
    print("Output: ")
    print(input)

您定义了一个 function 打印,它调用打印(即它本身)。

这导致无限递归。

将 function 的名称更改为其他名称,例如 display

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM