Io l'ho realizzato in passato. Devi creare un metodo ricorsivo che prenda come argomento la matrice (che di volta in volta verrà ridotta, eliminando la riga e la colonna interessata dal calcolo).
Se riesco a recuperare il codice lo posto.
... Eccolo:
Ovviamente è migliorabile e il parametro dell'ordine può essere trascurato, utilizzando la proprietà length degli array (all'epoca non ero molto esperto di Java...codice:private long det(int ai[][], int i) { long l = 0L; if(i == 1) l = ai[0][0]; else if(i == 2) { l = ai[0][0] * ai[1][1] - ai[0][1] * ai[1][0]; } else { int ai1[][] = new int[i - 1][i - 1]; for(int k = 0; k < i; k++) { for(int i1 = 1; i1 < i; i1++) { int j = 0; for(int j1 = 0; j1 < i; j1++) if(j1 != k) { ai1[i1 - 1][j] = ai[i1][j1]; j++; } } if(k % 2 == 0) l += (long)ai[0][k] * det(ai1, i - 1); else l -= (long)ai[0][k] * det(ai1, i - 1); } } return l; })
Ciao.![]()


)

Rispondi quotando