递归函数中return使用的问题.
下面的代码是排序递归函数,最后return的是一层层递归后的结果,但是当入参的 arr 是一个很长的数组时感觉想象一个个结果的时候太抽象怎么办,有什么好的方法去理解吗?
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
随便举个例:
有一个思路:
递归, 顾名思义就是函数调用函数,一次递归的完成终究要回到原来的函数上去, 那就先从少到多, 推演函数递归调用的过程, 首先是退出条件0个元素, 然后1个元素到退出的过程, 接着搞明白2个元素是如何递归变成1个元素的, 然后三个元素, 如果你能一步一步推到3个元素, 再多的基本没有什么区别了!
这不是二分法吗?