次のコードスニペットがエラーにつながる理由を理解できません。何か案は?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
はい、真実で、ベースケースはヒットしません。なぜ、正確には、各呼び出しでローがインクリメントされ、ハイがデクリメントされ、最終的には低> =高の条件が真であることを指し示す必要があります。 – fg78nc
デバッガはこのような問題を追跡します。または、少なくともいくつかの 'console.log'呼び出しを入れて、渡されている値を追跡してください。 –