3

2D 配列を生成する関数を返す関数を作成する必要があります。関数 mult(x,y) は乗算表を生成する関数を返し、generate_matrix() を呼び出すと行列が返されます。

    function mult(x,y){
            function generate_matrix(){
                var matrix = new Array(x);
                for(var k = 0; k < x+1; k++){
                    matrix[k] = new Array(y);
                }
                for(var i = 0; i < x+1; i++){
                    for(var j = 0; j < y+1; j++){
                        matrix[i][j] = i*j;
                    }
                }
                return matrix;
            }
            return generate_matrix;
        }

なんらかの理由で、行列が本来よりも 100 倍大きくなっています。たとえば、var matrix = mult(5,5) を設定してから matrix() を呼び出すと、サイズ 5x5 の配列ではなく、サイズ 50x50 の配列が与えられます。

を設定var m = mult(2,2)してから呼び出すとm()、次の 2D 配列が得られます。

[[0,0,0],[0,1,2],[0,2,4]]
4

1 に答える 1

0

これを試してみてください。これがあなたが望むものだと思います。

次のリンクでこれをテストできます: http://jsfiddle.net/BhaveshKachhadiya/Wt5gQ/33/

function mult(x, y) {
            var matrix = new Array(x);
            for (var k = 0; k < x + 1; k++) {
                matrix[k] = new Array(y);
            }
            for (var i = 0; i < x + 1; i++) {
                document.getElementById('output').innerHTML = document.getElementById('output').innerHTML + "[";
                for (var j = 0; j < y + 1; j++) {
                    matrix[i][j] = i * j;
                    document.getElementById('output').innerHTML = document.getElementById('output').innerHTML + matrix[i][j] + ",";
                }
                document.getElementById('output').innerHTML = document.getElementById('output').innerHTML + "]" + "<br/>"
            }
            alert(matrix);
            return matrix;
        }
于 2013-10-31T10:49:09.587 に答える