Quicksort Python Программа возвращает RecursionError: максимальная глубина рекурсии превышена по сравнению - PullRequest
0 голосов
/ 09 апреля 2020

Итак, я написал алгоритм быстрой сортировки в 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)

1 Ответ

1 голос
/ 09 апреля 2020

Вы определяете функцию print, которая вызывает print (т.е. сама).

Это приводит к бесконечной рекурсии.

Измените имя функции на что-то другое, например display

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...