Mam następujący kod programu:
double Macierz::det(int st,int wi,int *wk,Macierz &a)
{
int k,m;
int *ko;
double s;
if(st == 1)
return a.Pobierz(wi,wk[0]);
else{
ko = new int[a.Kolumny() - 1];
s=0; m=1;
for(int i=0;i<st;i++){
k=0;
for(int j=0;j<st-1;j++){
if(k==i) k++;
ko[j]=wk[k++];
}
s += m*a.Pobierz(wi,wk[i])*det(st-1,wi+1,ko,a);
m=-m;
}
delete [] ko;
return s;
}
}
QString Macierz::Wyznacznik(Macierz& A)
{
int * WK;
for(int i = 0; i < A.Kolumny(); i++)
WK = new int[A.Kolumny()];
QString wyp;
for(int i=0;i<A.Kolumny();i++)
WK[i]=i;
wyp.append(QString("%1").arg(det(A.Kolumny(),0,WK,A)));
delete [] WK;
return wyp;
}
A_Wczytaj();
ui->textEdit_2->setText(A.Wyznacznik(A));
i tak jeśli mam 10x10 to jeszcze działa ale jeśli dam 20x20 to program się zawiesza wiem że to jest przez to że musi wykonać dużą
liczbę obliczeń ale pytanie czy mogę to jakoś przyspieszyć zmodyfikować żeby lepiej działało