# Recursive algorithm to find the determinant of a matrix

• 06-06-2007
mahesh.mach
Recursive algorithm to find the determinant of a matrix
Below, i have shown the code to calculate the determinant value of a matrix.mat is the pointer to the single dimensional array everywhere and dimension is the dimension of a matrix. if 3x3 then dimension=3.
The code shows no compilation errors. But when it is run, i get an error saying some block of memory ( i dun remember which block) cannot be written.
what could possibly be the problem?

Code:

``` #include <stdio.h> #include <stdlib.h> #include <math.h> int det_recursive(int* mat,int dimension){         short int iter;         int * temp_mat;         int det_mat=0;         for (iter=0;iter<dimension;iter++){                 temp_mat=(int *) malloc(pow(dimension-1,2)*sizeof(int));                 form_new_mat(mat,iter,temp_mat,dimension);       det_mat=det_mat+((*(mat+iter))*det_recursive(temp_mat,dimension-1)*pow(-1,iter));         }         free(temp_mat+iter); return det_mat; } int form_new_mat(int * mat,int iter,int * temp_mat,int dimension){         int temp_iter=dimension;         int new_iter=0;         while(temp_iter<pow(dimension,2)){                 if (iter== temp_iter % dimension) temp_iter++;                 else{                         *(temp_mat+new_iter)=*(mat+temp_iter);                         new_iter++;                 }         } return 0; } int main(){         int dimension=3;         int mat[9]={1,0,0,0,1,0,0,0,1},i,j;         for (i=0;i<0;i++) printf("\nhello world");         //printf("%d",det_recursive(mat,dimension));         system("pause"); return 0; }```
• 06-07-2007
Salem