5

Google Apps Scriptスクリプトの最大再帰深度はどれくらいですか?match_recurse次の擬似コードのような関数があります。

function match_recurse(array) {
  for (i=0, i<3, i++) {
    var arr2 = array.copy().push(i);
    if (is_done(arr2)) break;
    match_recurse(arr2);
  }
}

(結果も返されますが、質問を膨らませたくありません。)

現在、実行エラーが発生したため、実行トランスクリプトとログが保存されなかったため、is_done関数が間違った仕事をしているかどうかを知る方法がありません。紙で問題のいくつかのケースを実行し、再帰の深さを確認することはできますが、最大値が何であるかわかりません。

Webを見ると、Windowオブジェクトを通過した場合のIEの最大呼び出しスタックは13であるという記事がありますが、それ以外は何もありません。

4

2 に答える 2

4

ここからわかるように、それは 1000 です。

function recurse(i) {
  var i = i || 1;
  try {
    recurse(i+1);
  } catch (e) {
    Logger.log(i);
  }
}
于 2012-10-18T05:20:41.573 に答える
2

スタックの深さの値は文書化されていません。次のコードを実行すると、この値が 1000 に等しいことが示されます。

function getStackDepth(curvalue) {
  try {
    curvalue = getStackDepth(curvalue) + 1;
  }
  catch(err) {
  }
  return curvalue;
}

function test() {
  var depth = getStackDepth(2);
  debugger;
}
于 2012-10-18T05:23:34.023 に答える