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 回答