1

呼び出された関数がmulti0(Array)あり、引数として配列を取得したいとします。

私がやった場合multi0([5])、それは次のような配列を返します

[0,0,0,0,0]

私がやった場合multi0([5,3])、それは次のような配列を返します

[
    [0,0,0],
    [0,0,0],
    [0,0,0],
    [0,0,0],
    [0,0,0]
]

再帰的にこれを試みましたが、うまくいきませんでした。これをどのように実装しますか?

4

2 に答える 2

5

このような:

function multi0(arr) {
  if (arr.length == 0) {
    return 0;
  } else {
    var children = arr.slice(1);
    var result = [];
    for (var i = 0; i < arr[0]; i++) {
      result.push(multi0(children));
    }
    return result;
  }
}

http://jsfiddle.net/ffuH4/

または、少し長くなりますが、より効果的です。

function multi0(arr) {
  var result = [];
  if (arr.length == 1) {
    for (var i = 0; i < arr[0]; i++) {
      result.push(0);
    }
  } else {
    var children = arr.slice(1);
    for (var i = 0; i < arr[0]; i++) {
      result.push(multi0(children));
    }
  }
  return result;
}
于 2012-04-26T19:48:04.160 に答える
0

これを試して:

function multi0(a,b) {
    x = new Array;
    for(var i=0;i<a;i++) {
        x[i] = new Array;
        for(var s=0;s<b;s++) {
            x[i][s] = 0;
        }
    }
    return x;
}

ここでそれをチェックしてくださいフィドル

于 2012-04-26T20:00:38.003 に答える