PrivateNick & TrueElseFalse
PrivateNick PrivateNick
Привет, столкнулся с какой-то странной рекурсией, когда отлаживал старый алгоритм сортировки. Не помешало бы, если бы кто-нибудь посмотрел еще раз, чтобы понять, где переполнение стека происходит.
TrueElseFalse TrueElseFalse
Похоже, базовый случай игнорируется или рекурсия до него не доходит. Проверь, чтобы каждый путь в функции завершался каким-нибудь условием выхода. Если ты сортируешь уже отсортированный массив, быстрая сортировка может выродиться до O(n²) и переполнит стек – используй опорный элемент "медиана из трёх" или переходи на итеративный алгоритм. Ещё убедись, что ты случайно не создаешь новый срез списка на каждом вызове, иначе глубина стека может оказаться больше, чем ожидается. Если скинешь фрагмент кода, я смогу указать на строку, которая никогда не удовлетворяет условие завершения. А пока попробуй добавить простое условие, например, `if n <= 1: return` и посмотри, остановится ли рекурсия. Удачи!