想象一下,我有一个被调用的函数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]
]
我用递归尝试了这个,但它没有用。你如何实现这一点?
想象一下,我有一个被调用的函数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]
]
我用递归尝试了这个,但它没有用。你如何实现这一点?
像这样:
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;
}
}
或者稍长但更有效的:
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;
}
尝试这个:
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;
}
在这里看看小提琴