2012-04-26 156 views
1

想象一下,我有一個函數multi0(Array),我希望它將一個數組作爲參數。函數返回0的多維數組

如果我這樣做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] 
] 

我嘗試這個遞歸,但它不起作用。你如何實現這個?

+1

請包括您試過的代碼,以便我們可以告訴您它出了什麼問題。 – 2012-04-26 19:45:09

回答

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