老师为什么我会报错?

来源:11-6 JavaScript 实现:快速排序

qq_慕运维6460539

2021-07-29

我照着视频敲得代码,执行后报错“超出最大调用堆栈大小"”,这是为什么:
图片描述图片描述

写回答

4回答

纯情掉了一地

2021-09-10

left 或者 right 数组长度可能会为 0 ,所以  
```js

if(arr.length === 1) return arr  

需要改成
if(arr.length < 2) return arr 

```

5
1
白熊MAX
正解nice
2021-10-15
共1条回复

dist

2021-09-10

Array.prototype.quickSort = function () {

    const rec = (arr) => {

        if (arr.length < 2) {

            return arr;

        }

        const left = [];

        const right = [];

        const mid = arr[0];

        for (let i = 1; i < arr.length; i++) {

            if (arr[i] < mid) {

                left.push(arr[i])

            } else {

                right.push(arr[i]);

            }

        }

        return [...rec(left), mid, ...rec(right)];

    }

    const res = rec(this);

    res.forEach((n, i) => {

        this[i] = n

    });

    return res;

}


const arr = [2, 3, 99, 5, 6];

let sortArr=arr.quickSort();

console.log(sortArr);


1
0

lewis

2021-10-15

在循环处加一个debugger,断点调试一下

0
0

lewis

2021-07-29

出现了死循环,你在所有循环处加一个断点看看

0
3
小星星724
回复
lewis
if (arr.length <= 1) return arr
2021-10-15
共3条回复

JavaScript版数据结构与算法 轻松解决前端算法面试

夯实算法基础,填补技术短板,助力面试考题最后一公里

2481 学习 · 683 问题

查看课程