Я пытаюсь разработать класс для матриц в c ++, и у меня есть старая функция, которая использует рекурсию для вычисления nxn определителей, которые я хочу внедрить в de Class. В течение нескольких дней безуспешно возился с этим.
Итак, основная проблема, которую я нахожу, связана с рекурсивной частью функции, она была ранее разработана для некоторых школьных занятий, я не уверен, как сохранить параметрыфункции, работающей для класса, я был бы признателен за некоторые указатели.
Это класс
class matriz
{ private:
int a=0, b=0;
float m[MAX][MAX], aux[MAX][MAX], aux2[MAX][MAX];
public:
matriz(int);
matriz(float *, int);
matriz(float *, int, int);
void size_input();
void printm();
void rand_populate();
float mute_det(float *, int);
};
и упомянутая функция
float matriz::mute_det(float* , int a)
{
int i=0, j=0, k=0, n1=0, n2=0;
float det=m[0][0] * m[1][1] - m[1][0] * m[0][1];
float d=aux[0][0] * aux[1][1] - aux[1][0] * aux[0][1];
if(a==1)
{
return m[0][0];
}
else if(a==2)
{
return det;
}
for(k=0;k<a;k++)
{
n1=0;
n2=0;
for(i=1;i<a;i++)
{
=0;
for(j=0;j<a;j++)
{
if(j==k)
{
j++;
}
aux[n1][n2]=m[i][j];
n1++;
}
n2++;
}
if (k%2==0)
{
if (a==2)
{
d=d+m[0][k]*mute_det(aux, a);
}
else if(a!=2 && k==0)
{
d=d*m[0][0]+mute_det(aux, a-1)*m[0][1];
}
else if(a!=2 && k!=0)
{
d=d+mute_det(aux, a-1)*m[0][k];
}
}else
{
if (a==2)
{
d=d-m[0][k]*mute_det(aux, a);
}
else if(a!=2 && k==0)
{
d=d*m[0][0]-mute_det(aux, a-1)*m[0][1];
}
else if(a!=2 && k!=0)
{
d=d-mute_det(aux, a-1)*m[0][k];
}
}
}
return d;
}