Ruby 系统堆栈错误

Ruby 系统堆栈错误,ruby,Ruby,因此,我有以下代码用于Ruby中的合并排序 class MergeSort def sort(array) if array.length == 1 || array.length == 0 return array end firstHalf = array[0..array.length / 2] secondHalf =

因此,我有以下代码用于Ruby中的合并排序

class MergeSort

     def sort(array)
               if array.length == 1 || array.length == 0
                   return array
               end
               firstHalf = array[0..array.length / 2]
               secondHalf = array[(array.length / 2) + 1..array.length]
               firstHalf = sort(firstHalf)
               secondHalf = sort(secondHalf)
               b = 0
               c = 0
               for i in (0..(firstHalf.length - 1))
                  while b < secondHalf.length && firstHalf[i] >= secondHalf[b]
                       array[c] = secondHalf[b]
                       b = b + 1
                       c = c + 1
                  array[c] = firstHalf[i]
                  c = c + 1
               end
               return array
     end

end

array = [1,4,9,14,20,25]
puts MergeSort::new.sort(array)
类合并排序
def排序(数组)
如果array.length==1 | | array.length==0
返回数组
结束
firstHalf=数组[0..array.length/2]
secondHalf=array[(array.length/2)+1..array.length]
firstHalf=排序(firstHalf)
secondHalf=排序(secondHalf)
b=0
c=0
对于i in(0..(前半部分长度-1))
而b=secondHalf[b]
数组[c]=secondHalf[b]
b=b+1
c=c+1
数组[c]=前半部分[i]
c=c+1
结束
返回数组
结束
结束
数组=[1,4,9,14,20,25]
puts MergeSort::new.sort(数组)

当我运行代码时,我得到一个
SystemStackError
。有人能告诉我为什么会这样吗?谢谢。

要调用
。新建
您必须在类中有
初始化
方法。
您可能想做的是在类本身上调用
.sort
,在这种情况下,您必须在其前面加上
self
,因此:

class MergeSort
   def self.sort(array)
   ...
之后你可以这样称呼它:

MergeSort.sort(array)

猜测一下,一旦数组长度达到3(即元素
[0..2]
),调用

firstHalf = array[0..array.length / 2]
评估为

0..1.5
如果1.5四舍五入为2

然后再次调用sort
[0..2]


最终会出现堆栈溢出?

它不会引发SystemStackError。它会引发语法错误。