Javascript JS Mergesort重载堆栈的问题

Javascript JS Mergesort重载堆栈的问题,javascript,Javascript,所以,我有这个mergeSort算法,但似乎无法在JS中运行。当我尝试运行它时,超过了最大调用堆栈,我无法找出原因。任何帮助都将不胜感激 export const doMergeSort = (array) => { const mergeSort = arr => { let mid = Math.floor(arr.length / 2), left = mergeSort(arr.slice(0, mid)),

所以,我有这个mergeSort算法,但似乎无法在JS中运行。当我尝试运行它时,超过了最大调用堆栈,我无法找出原因。任何帮助都将不胜感激

export const doMergeSort = (array) => {
    const mergeSort = arr => {
        
        let mid = Math.floor(arr.length / 2),
            left = mergeSort(arr.slice(0, mid)),
            right = mergeSort(arr.slice(mid));
      
        return merge(left, right);
      };

    const merge = (arr1, arr2) => {
        let sorted = [];
      
        while (arr1.length && arr2.length) {
          if (arr1[0] < arr2[0]) sorted.push(arr1.shift());
          else sorted.push(arr2.shift());
        };
      
        sorted.concat(arr1.slice().concat(arr2.slice()));
      };

      mergeSort(array);
      
      
}
export const doMergeSort=(数组)=>{
const mergeSort=arr=>{
让中间=数学楼层(arr.length/2),
左=合并排序(arr.slice(0,mid)),
右=合并排序(arr.slice(mid));
返回合并(左、右);
};
常量合并=(arr1,arr2)=>{
设排序=[];
while(arr1.length&&arr2.length){
if(arr1[0]
mergeSort()
在一个无休止的循环中调用自身。我做了一个例子来演示-运行它看看
const maxCallCount=5
让callCount=0;
const mergeSort=arr=>{
//循环次数过多时输出并退出
callCount+=1;
log(`${callCount}.mergeSort(${JSON.stringify(arr)})`);
如果(callCount>=maxCallCount){
console.log(“…”);
返回;
}
//您的代码(它永远不会执行超过这些行)
让中间=数学楼层(arr.length/2),
left=mergeSort(arr.slice(0,mid));//递归调用
};
//调用mergeSort,启动递归循环

合并排序([1,2])
mergeSort()
中,您可以立即递归调用
mergeSort
,而不管传递给函数的参数是什么,不管数组的长度,也不管任何条件。您的递归没有基本情况。