这是我的代码。Ruby:堆栈级别太深(SystemStackError)实施合并排序倒数计数
@@inversions = 0
numbers = [very big array]
def merge_sort(array)
return array if array.size <= 1
left = array.slice(0, (array.size/2).round)
right = array - left
merge(merge_sort(left), merge_sort(right))
end
def merge(left, right)
return right if left.empty? # crashes here with stack level too deep
return left if right.empty?
if left.first <= right.first
[left.first] + merge(left[1..-1], right)
else
@@inversions += left.size
[right.first] + merge(left, right[1..-1])
end
end
请问您为什么会失败? (对数组工作不到〜15000大小)
感谢。在rewrited几乎同样的方式它的工作 – 2012-03-21 20:39:51