Вы получаете ошибку, потому что рекурсия не останавливается из-за проблемы с алгоритмом сортировки.В методе sort
значение k
всегда меньше unsorted.length
.Это приводит к тому, что другие массивы, sorted
и unsort
никогда не заполняются.
Например, попробуйте ввести их:
Кроме того, я думаю, что вы не хотите включать пустую строку, поэтому я бы изменил код с:
words = words.push word
на words = words.push word if word != ''
Создает массив unsorted
:
- [0] собака
- [1] зебра
- [2] кошка
Ниже приведены итерации рекурсивного sort
метода.
#initial variable state:
i = 0
k = 1
- собака = собака
- пропустить секунду, пока цикл
- i = 1
- зебра> собака
- пропустить секунду во время цикла
- i = 2
- кошка <собака <ul>
- введите второй цикл while
- k = 1, теперь cat
- k = 2, теперь cat = cat, поэтому выйдите, пока
- i = 3
- Поскольку
i
теперь равен длине массива unsorted
, два цикла while neВернитесь больше.
Следовательно, следующий код приводит к бесконечному циклу, поскольку в массив unsort
ничего не помещалось:
if unsort.length != 1
i = 0
sort unsort, [], sorted, i #Problem is that `unsort` and `sorted` are empty
elsif
...
end