-5

たとえば、ネストされた配列内の要素の数をカウントするために、直接の基本ケースのない再帰関数 (階乗など) を作成するための最良のアプローチは何ですか? 2 つのアプローチを念頭に置いています。結果を直接返すため、推奨:

画像としてのコード

2番目のものは、関数にアタッチされた変数にカウントを保持し、正常に動作しますが、結果を処理して変数をリセットするのは奇妙です。

画像としてのコード

任意のポインタをいただければ幸いです。

4

2 に答える 2

0

関心のある値を単純に返すことができます。

function countElements(arr) {
  var count = 0;
  for (var i=0; i<arr.length; i++) {
    if (arr[i] instanceof Array) {
      count += countElements(arr[i]); // recursion here
    } else {
      count++; // normal element counts as 1
    }    
  }
  return count;
}

デモ: http://jsbin.com/ejEmOwEQ/1/edit

警告: 配列に自己参照が含まれている場合、関数は終了しない可能性があります ( var arr = []; arr.push(arr); countElements(arr);)

于 2013-10-04T11:40:47.307 に答える