【发布时间】:2017-07-21 20:48:01
【问题描述】:
我正在尝试使用递归自己实现合并排序。
def merge_sort(a,i,j)
if i < j
merge_sort(a,i,j/2)
merge_sort(a,j/2+1,j)
merge(a,i,j/2,j/2+1,j)
end
end
def merge(a,i,j,k,l)
# No implementation yet
end
问题是我的实现导致堆栈过深。对于这么小的数组,我不应该收到此错误消息。我要排序的数组只有五个元素。
b = [5,4,3,2,1]
p merge_sort(b,0,b.size - 1) # => results in 'stack to deep' message
【问题讨论】:
-
第一步是调试。
p [ a, i, j ]作为第一行可能会非常很有启发性。我的钱出现了一个错误。
标签: ruby