我不明白爲什麼下面的代碼片段導致錯誤。有任何想法嗎?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'調用來跟蹤傳入的值。 –