我不明白为什么下面的代码片段导致错误。有任何想法吗?JavaScript递归,反转数组
最大调用堆栈大小超过
function reverseArrayInPlace(array, low, high) {
if (low == undefined) {
low = 0;
}
if (high == undefined) {
high = array.length - 1;
}
if (low >= high) {
return;
}
var temp = array[low];
array[low] = array[high];
array[high] = temp;
return reverseArrayInPlace(array, low++, high--);
}
var arrayValue = [1, 2, 3, 4, 5];
reverseArrayInPlace(arrayValue);
console.log(arrayValue);
这意味着您的碱的情况下,如果'(低> =高)'没有被击中。你总是会遇到递归的情况,JS引擎最终会阻止它,否则它会永远持续下去。也许这会帮助你调试算法。 – joews
是的,真的,基本情况没有被打中,问题就是为什么每次调用都会增加低,而高度递减,最终必须指出low> = high的条件为真 – fg78nc
您应该学会使用调试器来追踪这样的问题。或者至少放一些'console.log'调用来跟踪传入的值。 –