0
我有一個計算矩陣行列式的遞歸函數,但在它的參數中我有一個類名,後來我使用該函數,但這次我需要而不是參數作爲類名,我需要它只是一個矩陣的名稱。JavaScript技巧省略類
或者我可以以某種方式向我的小矩陣中添加一個類?或者我該如何欺騙這個。請多多指教。
function create2Darray(clname)
{
//creates a 2d array of an array returned by the function getElementsByClassName;
var A = document.getElementsByClassName(clname);
var arr = new Array();
var rows = Math.sqrt(A.length);
for(var i = 0;i < rows; i++)
{
arr[i] = new Array();
for(var j = 0; j < rows;j++)
{
arr[i][j] = A[i*rows + j].value;
}
}
return arr;
}
function determinant (matrixClass)
{
var matrix = create2Darray(matrixClass);
var det = 0;
if(matrix.length == 1)
{
return matrix[0][0];
}
else if(matrix.length == 2)
{
return (matrix[0][0] * matrix[1][1]) - (matrix[0][1] * matrix[1][0]);
}
var smaller = new Array();//creating an empty array for a matrix minor;
for(var k = 0;k < matrix.length; k++)
{
smaller[k] = [];
for(var l = 0;l < matrix.length; l++)
{
smaller[k][l] = [];
}
}
for(var i = 0;i < matrix.length; i++)
{
for (a = 1; a < matrix.length; a++)
{
for (b = 0; b < matrix.length; b++)
{
if (b < i)
{
smaller[a - 1][b] = A[a][b];
}
else if (b > i)
{
smaller[a - 1][b - 1] = A[a][b];
}
}
}
if (i % 2 == 0)
s = 1;
else
s = -1;
det += s * A[0][i] * (determinant(smaller));
}
return (det);
alert(det);
}
if(type =='class'){ \t \t var matrix = create2Darray(matrixClass); \t} \t else if(type =='name'){ \t \t matrixClass = new Array(); \t \t var matrix = matrixClass; \t}會不喜歡那樣的工作? – user2167174 2013-05-11 23:00:00
我認爲,而不是'matrixClass = new Array(); var matrix = matrixClass;'你可以只做'var matrix = new Array();' – 2013-05-11 23:15:28