【发布时间】:2018-05-08 15:44:44
【问题描述】:
所以我学习了归并排序(在 Ruby 中)并且我主要了解它的工作原理,所以我只是在编写“mergeSort”功能的开头并将数组拆分:
array = [5,1,8,3,4,6,11,2]
def mergeSort(arr,beginIndex,endIndex)
if endIndex > beginIndex
mid = (beginIndex+endIndex)/2
puts mid
puts "#{arr[0..mid]}"
puts "#{arr[mid+1..-1]}"
mergeSort(arr,0,mid) #comment out here?
mergeSort(arr,mid+1,arr.length-1) #or here?
end
end
mergeSort(array,0,array.length-1)
所以我了解发生了什么,并且打印出来的内容正常工作。然而奇怪的是......如果我注释掉任何一个二级嵌套mergeSort(我说“#comment 在这里?还是在这里?)我会得到一个打印输出,就像我想的那样。但是如果我离开两者都将永远持续下去,直到我得到“堆栈级别太深”。这很奇怪,因为注释掉任何一个它都会在数组长度为 1 时停止。
为什么会这样?
【问题讨论】: