1
正在使用遞歸進行合併排序,這可能是堆棧溢出的原因。我已經搜索,但似乎無法找出代碼的哪一部分導致所有這一切。正在執行合併排序算法的系統堆棧錯誤
這裏是我的代碼:
def merge(arr)
return arr if arr.length <= 1
mid = arr.length/2
x = arr[0..mid]
y = arr[mid..-1]
merge_sort(merge(x),merge(y))
end
def merge_sort(left, right)
sorted = []
while left.length > 0 && right.length > 0
if left.first > right.first
sorted << left.shift
else
sorted << right.shift
end
end
sorted.concat(left).concat(right)
end
nums = 15.times.map {rand(100) + 1}
puts merge(nums)
在終端,我得到:合併-sort.rb:2:堆棧層次過深(SystemStackError)