我,小李! 2021-12-02 16:52 采纳率: 0%
浏览 35

归并排序提示我超出最大调用栈应该是无限回调了,可以帮我看看逻辑哪里出问题了不

问题遇到的现象和发生背景

归并排序提示我超出最大调用栈应该是无限回调了,逻辑哪里出问题了

问题相关代码,请勿粘贴截图
let arr = [1, 5, 8, 7, 3, 9];
let i = 0;
let j = arr.length - 1;

function fn(arr, i, j) {
  if (arr == null || arr.length < 2) {
    return;
  }
  merge(arr, i, j);
}
function merge(arr, i, j) {
  if (i == j) {
    return;
  }
  let mid = i + (j - i) / 2;
  merge(arr, i, mid);
  merge(arr, mid + 1, j);
  f1(arr, i, mid, j);
}
function f1(arr, i, mid, j) {
  var newArr = [];
  let p1 = i;
  let p2 = mid + 1;
  while (p1 <= mid && p2 <= j) {
    arr[p1] < arr[p2] ? newArr.push(arr[p1++]) : newArr.push(arr[p2++]);
  }
  while (p1 <= mid) {
    newArr.push(arr[p1++]);
  }
  while (p2 <= j) {
    newArr.push(arr[p2++]);
  }
}
fn(arr, i, j);


运行结果及报错内容

merge(arr, i, mid);
^

RangeError: Maximum call stack size exceeded
at merge (C:\Users\lya\Desktop\bukajiaoyuu\杂项\06.归并排序.js:16:3)
at merge (C:\Users\lya\Desktop\bukajiaoyuu\杂项\06.归并排序.js:16:3)
at merge (C:\Users\lya\Desktop\bukajiaoyuu\杂项\06.归并排序.js:16:3)
at merge (C:\Users\lya\Desktop\bukajiaoyuu\杂项\06.归并排序.js:16:3)
at merge (C:\Users\lya\Desktop\bukajiaoyuu\杂项\06.归并排序.js:16:3)
at merge (C:\Users\lya\Desktop\bukajiaoyuu\杂项\06.归并排序.js:16:3)
at merge (C:\Users\lya\Desktop\bukajiaoyuu\杂项\06.归并排序.js:16:3)
at merge (C:\Users\lya\Desktop\bukajiaoyuu\杂项\06.归并排序.js:16:3)
at merge (C:\Users\lya\Desktop\bukajiaoyuu\杂项\06.归并排序.js:16:3)
at merge (C:\Users\lya\Desktop\bukajiaoyuu\杂项\06.归并排序.js:16:3)

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 小z666 2021-12-02 17:07
    关注

    没看懂你想干啥。。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月2日

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的