我有一个计算矩阵行列式的递归函数,但是在它的参数中我有一个类名,后来我正在使用该函数,但这次我需要代替一个参数作为类名,我需要它只是一个矩阵的名称。
或者我可以以某种方式将一个类添加到我的较小矩阵中?或者我该如何欺骗它。应该心存感激。
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);
}
答案 0 :(得分:0)
如果我做对了,你需要在决定性函数中使用不同的行为,具体取决于你是否将类或名称传递给它。
如何添加第二个参数来说明它是什么?
function determinant(matrixClassOrName, type) {
if (type == "class") {
//logic for class
}
else if (type == "name") {
//logic for name
}
}
虽然在这种情况下你可以使用两种不同的功能。