2012-04-26 10 views
1

私はmulti0(Array)という関数を持っていて、引数として配列を取っていたとします。0の多次元配列を返す関数

私がmulti0([5])いた場合、それは私がmulti0([5,3])をした場合、それは私が再帰でこれを実行しようとしました

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

のように見えるの配列を返します
[0,0,0,0,0] 

のように見えるの配列を返します、しかしそれはうまくいかなかった。あなたはこれをどのように実装していますか?このよう

+1

あなたが試みたコードを含めて、間違っていることを教えてください。 –

答えて

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; 
} 
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; 
} 

はここでそれをチェックアウトfiddle